Automatisk identifiering

Med automatisk identifiering rapporterar maskinerna och nätet själva vilka IP-adresser som används. Du kan köra en agent på varje maskin, en insamlare i nätet – eller båda.

Så fungerar det

Både agenten och insamlaren skickar en rapport till ipmanager med POST /api/v1/agent/report över HTTPS, med en API-nyckel i Authorization-headern. ipmanager gör sedan följande för varje adress i rapporten:

  • Ny IP-adress: skapas med status ”i bruk”, och källan markeras som agent eller skanning.
  • Känd adress: ”senast sedd” uppdateras. Ändrat värdnamn eller ändrad MAC-adress uppdateras och loggas i revisionsloggen.
  • Adress som var ledig eller frånkopplad: sätts till ”i bruk” igen.
  • Ingen ändring: bara ”senast sedd” uppdateras, utan ny post i revisionsloggen.

Om organisationen har nått adressgränsen skapas inga nya adresser. De räknas som limited i svaret, medan kända adresser fortfarande uppdateras.

AgentInsamlare
Körs påVarje maskin som ska rapporteraEn maskin i nätet
HittarMaskinens egna adresser, värdnamn och MACAllt som svarar på ping, ARP-tabellen, omvänd DNS och DHCP-leasar
PlattformLinux och macOS (shell), Windows (PowerShell)Python 3 utan beroenden, oftast på Linux
Passar förServrar och fasta maskinerSkrivare, IoT, AV-utrustning och allt där du inte kan installera något

1. Skapa en API-nyckel

Gå till Automatisk identifiering och API i ipmanager och skapa en ny nyckel med behörigheten agent. En agentnyckel kan bara skicka rapporter – den kan inte läsa eller ta bort data. Nyckeln visas bara en gång, så spara den på ett säkert ställe. Skapa gärna en nyckel per plats eller insamlare, så att du kan återkalla en enskild nyckel utan att påverka de andra.

2a. Agent på Linux och macOS

Ladda ner och testa
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

# Testa
IPM_TOKEN=ipm_xxxxxxxx sh /usr/local/bin/ipm-agent.sh

Lägg nyckeln i en fil som bara root kan läsa, i stället för i crontab:

Spara nyckeln
mkdir -p /etc/ipmanager
echo 'IPM_TOKEN=ipm_xxxxxxxx' > /etc/ipmanager/agent.env
chmod 600 /etc/ipmanager/agent.env
Med cron
# /etc/cron.d/ipmanager – rapportera var 15:e minut
*/15 * * * * root . /etc/ipmanager/agent.env && IPM_TOKEN=$IPM_TOKEN sh /usr/local/bin/ipm-agent.sh >/dev/null 2>&1
Med systemd-timer
# /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.target
Aktivera timern
systemctl daemon-reload
systemctl enable --now ipm-agent.timer

2b. Agent på Windows

Ladda ner och testa (PowerShell som administratör)
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

# Testa
$env:IPM_TOKEN = 'ipm_xxxxxxxx'
powershell -NoProfile -ExecutionPolicy Bypass -File C:\ProgramData\ipmanager\ipm-agent.ps1
Schemalagd aktivitet var 15:e minut
[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. Insamlare i ditt eget nät

Insamlaren är ett enda Python 3-skript utan beroenden. Det körs på en maskin i nätet – en server, en virtuell maskin eller en liten Linux-burk – och fungerar som mellanhand: det ser nätet inifrån och rapporterar ut till ipmanager.

Ladda ner och kör
curl -fsSO https://ipmanager.no/api/v1/agent/scripts/ipm-collector.py
python3 ipm-collector.py --help

# Svep två nät och ta med ARP-tabellen
python3 ipm-collector.py --token ipm_xxxxxxxx --arp 10.20.0.0/24 10.20.3.0/24

Insamlaren pingar adresserna i de nät du anger, läser maskinens ARP-tabell för att hitta MAC-adresser, slår upp omvänd DNS för värdnamn och kan läsa leasar från dnsmasq och ISC DHCP. Se --help för alla alternativ.

Schemalägg med cron
# /etc/cron.d/ipmanager-collector – varje timme
0 * * * * root . /etc/ipmanager/agent.env && python3 /opt/ipmanager/ipm-collector.py --token "$IPM_TOKEN" --arp 10.20.0.0/16 >/dev/null 2>&1
ARP-tabellen innehåller bara maskiner i samma lager 2-nät som insamlaren. För nät bakom en router får du IP och värdnamn men inte MAC – om du inte läser DHCP-leasar eller kör en insamlare i varje nät.

4. DNS-kontroll av interna namn

Publika IP-adresser kontrolleras automatiskt från ipmanager.no mot publik DNS en gång per dygn. Interna namn – som .local eller Active Directory-DNS – kan bara slås upp inifrån. Därför kan insamlaren kontrollera dem med --dns-check, mot DNS-servern i ditt eget nät.

Insamlaren hämtar de registrerade adresserna med värdnamn i de nät du anger, slår upp PTR-posten för varje IP och A/AAAA-posten för varje namn och rapporterar resultatet. ipmanager sätter status OK, avvikelse eller saknas (PTR eller A/AAAA), och avvikelser visas också under Avvikelser. Med --no-scan hoppar insamlaren över ping-svepet och kontrollerar bara DNS.

Endast DNS-kontroll
IPM_TOKEN=ipm_xxxxxxxx python3 ipm-collector.py --dns-check --no-scan 10.20.0.0/16
Schemalägg med cron
# /etc/cron.d/ipmanager-dns – varje 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>&1

Använder ni korta värdnamn kan ni ange ett DNS-suffix i ipmanager, så att fil01 kontrolleras som fil01.skola.local. Adresser utan värdnamn får ett förslag från PTR-posten som kan användas med ett klick.

Avvikelser från rapporterna

Rapporterna från agenter och insamlare används också för att hitta avvikelser: dubblerad IP (två MAC-adresser på samma IP inom några minuter), fel MAC på en registrerad IP (den registrerade MAC-adressen skrivs inte över), en känd MAC på en annan IP, maskiner på adresser som är registrerade som lediga, reserverade eller utfasade, IP-adresser utanför registrerade subnät, fasta adresser i DHCP-intervall och ändrade värdnamn. Avvikelserna löses automatiskt när förhållandet försvinner, och administratörerna får mejl om nya kritiska avvikelser och varningar.

Brandvägg och nätverk

  • Agent och insamlare behöver bara utgående TCP 443 till ipmanager.no. Inget behöver öppnas inåt.
  • Insamlaren måste kunna skicka ICMP echo (ping) till de nät den ska svepa. Maskiner med en värdbrandvägg som blockerar ping hittas inte med ping, men kan dyka upp via ARP eller DHCP.
  • Går utgående trafik via en proxy kan skripten använda de vanliga proxyvariablerna (HTTPS_PROXY).

Säkerhet

  • Använd nycklar med behörigheten agent. De kan bara rapportera, inte läsa eller ta bort.
  • Spara nyckeln i en fil som bara root eller SYSTEM kan läsa, inte i skript som checkas in i versionshantering.
  • Sidan för API-nycklar visar när varje nyckel senast användes och från vilken IP. Återkalla nycklar som inte används.
  • Skripten är ren text. Läs igenom dem innan du kör dem.

Felsökning

SvarOrsak
401 invalid_tokenFel nyckel, eller så har nyckeln återkallats.
403 insufficient_scopeNyckeln har inte behörigheten agent.
limited > 0 i svaretOrganisationen har nått adressgränsen. Nya adresser skapades inte.
Inga nya adresser från insamlarenKontrollera att ping är tillåtet och att näten är angivna i CIDR-notation.

Se API-dokumentationen för det exakta formatet på rapporten.

Få ordning på IP-adresserna i dag

Gratis upp till 100 IP-adresser. Inloggning via e-post direkt, inget betalkort.