Slik fungerer det
Både agenten og innsamleren sender en rapport til ipmanager med POST /api/v1/agent/report over HTTPS, med en API-nøkkel i Authorization-headeren. ipmanager gjør så dette for hver adresse i rapporten:
- Ny adresse: opprettes med status «i bruk», og kilden merkes som agent eller skanning.
- Kjent adresse: «sist sett» oppdateres. Endret vertsnavn eller MAC-adresse oppdateres og logges i revisjonsloggen.
- Adresse som var ledig eller frakoblet: settes til «i bruk» igjen.
- Ingen endring: kun «sist sett» oppdateres, uten ny post i revisjonsloggen.
Hvis organisasjonen har nådd adressegrensen, opprettes ikke nye adresser. De telles som limited i svaret, mens kjente adresser fortsatt oppdateres.
| Agent | Innsamler | |
|---|---|---|
| Kjøres på | Hver maskin som skal rapportere | Én maskin i nettet |
| Finner | Maskinens egne adresser, vertsnavn og MAC | Alle som svarer på ping, ARP-tabellen, omvendt DNS og DHCP-leieavtaler |
| Plattform | Linux og macOS (shell), Windows (PowerShell) | Python 3 uten avhengigheter, typisk på Linux |
| Egner seg for | Servere og faste maskiner | Skrivere, IoT, AV-utstyr og alt der du ikke kan installere noe |
1. Lag en API-nøkkel
Gå til Auto-deteksjon og API i ipmanager, og lag en ny nøkkel med tilgangen agent. En agentnøkkel kan bare sende rapporter – den kan ikke lese eller slette data. Nøkkelen vises bare én gang, så lagre den trygt. Lag gjerne én nøkkel per lokasjon eller innsamler, slik at du kan trekke tilbake en enkelt nøkkel uten å påvirke andre.
2a. Agent på Linux og macOS
curl -fsSo /usr/local/bin/ipm-agent.sh https://ipmanager.no/api/v1/agent/scripts/ipm-agent.sh
chmod 755 /usr/local/bin/ipm-agent.sh
# Test
IPM_TOKEN=ipm_xxxxxxxx sh /usr/local/bin/ipm-agent.shLegg nøkkelen i en fil som bare root kan lese, i stedet for i crontab:
mkdir -p /etc/ipmanager
echo 'IPM_TOKEN=ipm_xxxxxxxx' > /etc/ipmanager/agent.env
chmod 600 /etc/ipmanager/agent.env# /etc/cron.d/ipmanager – rapporter hvert 15. minutt
*/15 * * * * root . /etc/ipmanager/agent.env && IPM_TOKEN=$IPM_TOKEN sh /usr/local/bin/ipm-agent.sh >/dev/null 2>&1# /etc/systemd/system/ipm-agent.service
[Unit]
Description=ipmanager agent
Wants=network-online.target
After=network-online.target
[Service]
Type=oneshot
EnvironmentFile=/etc/ipmanager/agent.env
ExecStart=/bin/sh /usr/local/bin/ipm-agent.sh
# /etc/systemd/system/ipm-agent.timer
[Unit]
Description=Run ipmanager agent every 15 minutes
[Timer]
OnBootSec=2min
OnUnitActiveSec=15min
RandomizedDelaySec=60
[Install]
WantedBy=timers.targetsystemctl daemon-reload
systemctl enable --now ipm-agent.timer2b. Agent på Windows
New-Item -ItemType Directory -Force C:\ProgramData\ipmanager | Out-Null
Invoke-WebRequest https://ipmanager.no/api/v1/agent/scripts/ipm-agent.ps1 -OutFile C:\ProgramData\ipmanager\ipm-agent.ps1
# Test
$env:IPM_TOKEN = 'ipm_xxxxxxxx'
powershell -NoProfile -ExecutionPolicy Bypass -File C:\ProgramData\ipmanager\ipm-agent.ps1[Environment]::SetEnvironmentVariable('IPM_TOKEN', 'ipm_xxxxxxxx', 'Machine')
schtasks /Create /TN "ipmanager agent" /RU SYSTEM /SC MINUTE /MO 15 /F `
/TR "powershell.exe -NoProfile -ExecutionPolicy Bypass -File C:\ProgramData\ipmanager\ipm-agent.ps1"3. Innsamler i ditt eget nett
Innsamleren er ett Python 3-skript uten avhengigheter. Den kjøres på én maskin i nettet – en server, en virtuell maskin eller en liten Linux-boks – og fungerer som mellomledd: den ser nettet innenfra og rapporterer ut til ipmanager.
curl -fsSO https://ipmanager.no/api/v1/agent/scripts/ipm-collector.py
python3 ipm-collector.py --help
# Sveip to nett og ta med ARP-tabellen
python3 ipm-collector.py --token ipm_xxxxxxxx --arp 10.20.0.0/24 10.20.3.0/24Innsamleren pinger adressene i nettene du oppgir, leser maskinens ARP-tabell for å finne MAC-adresser, slår opp omvendt DNS for vertsnavn og kan lese leieavtaler fra dnsmasq og ISC DHCP. Se --help for alle valg.
# /etc/cron.d/ipmanager-collector – hver time
0 * * * * root . /etc/ipmanager/agent.env && python3 /opt/ipmanager/ipm-collector.py --token "$IPM_TOKEN" --arp 10.20.0.0/16 >/dev/null 2>&14. DNS-sjekk av interne navn
Offentlige IP-adresser sjekkes automatisk fra ipmanager.no mot offentlig DNS én gang i døgnet. Interne navn – som .local eller Active Directory-DNS – kan bare slås opp innenfra. Derfor kan innsamleren sjekke dem med --dns-check, mot DNS-serveren i ditt eget nett.
Innsamleren henter de registrerte adressene med vertsnavn i nettene du oppgir, slår opp PTR-posten for hver IP og A/AAAA-posten for hvert navn, og rapporterer resultatet. ipmanager setter status OK, avvik eller mangler (PTR eller A/AAAA), og avvik vises også under Avvik. Med --no-scan hopper innsamleren over ping-sveipet og sjekker bare DNS.
IPM_TOKEN=ipm_xxxxxxxx python3 ipm-collector.py --dns-check --no-scan 10.20.0.0/16# /etc/cron.d/ipmanager-dns – hver natt kl. 03:15
15 3 * * * root . /etc/ipmanager/agent.env && IPM_TOKEN="$IPM_TOKEN" python3 /opt/ipmanager/ipm-collector.py --dns-check --no-scan 10.20.0.0/16 >/dev/null 2>&1Bruker dere korte vertsnavn, kan dere angi et DNS-suffiks i ipmanager, slik at fil01 sjekkes som fil01.skole.local. Adresser uten vertsnavn får et forslag fra PTR-posten som kan tas i bruk med ett klikk.
Avvik fra rapportene
Rapportene fra agenter og innsamler brukes også til å finne avvik: duplikat IP (to MAC-adresser på samme IP i løpet av få minutter), feil MAC på en registrert IP (den registrerte MAC-en overskrives ikke), en kjent MAC på en annen IP, maskiner på adresser registrert som ledige, reserverte eller utfasede, IP-er utenfor registrerte subnett, faste adresser i DHCP-områder og endrede vertsnavn. Avvikene løses automatisk når forholdet forsvinner, og administratorene får e-post om nye kritiske avvik og advarsler.
Brannmur og nettverk
- Agent og innsamler trenger bare utgående TCP 443 til
ipmanager.no. Ingenting skal åpnes inn. - Innsamleren må kunne sende ICMP echo (ping) til nettene den skal sveipe. Maskiner med vertsbrannmur som blokkerer ping, blir ikke funnet med ping, men kan dukke opp via ARP eller DHCP.
- Går utgående trafikk via en proxy, kan skriptene bruke standard proxy-variabler (
HTTPS_PROXY).
Sikkerhet
- Bruk nøkler med tilgangen agent. De kan bare rapportere, ikke lese eller slette.
- Lagre nøkkelen i en fil som bare root eller SYSTEM kan lese, ikke i skript som sjekkes inn i versjonskontroll.
- Siden for API-nøkler viser når hver nøkkel sist ble brukt, og fra hvilken IP. Trekk tilbake nøkler som ikke brukes.
- Skriptene er ren tekst. Les gjennom dem før du kjører dem.
Feilsøking
| Svar | Årsak |
|---|---|
401 invalid_token | Feil nøkkel, eller nøkkelen er trukket tilbake. |
403 insufficient_scope | Nøkkelen har ikke tilgangen agent. |
limited > 0 i svaret | Organisasjonen har nådd adressegrensen. Nye adresser ble ikke opprettet. |
| Ingen nye adresser fra innsamleren | Sjekk at ping er tillatt, og at nettene er skrevet i CIDR-notasjon. |
Se API-dokumentasjonen for det nøyaktige formatet på rapporten.