DNS-oppdatering 1.1

Beskrivelse av DNS-oppdatering versjon 1.1.

1   Autoritative kilder for data om subnett

Filen subnets.txt i katalogen /sitemusevisa.uio.no er autoritativ for hvilke subnett som finnes, spesifisert med IP og subnett-maske.

Cerebrum er for Cerebrum-formål autoritativ når det gjelder informasjon som er knyttet til det enkelte subnett, dvs description, name_prefix, dns_delegated, vlan_number og antall reserverte adresser på et gitt subnett. Eneste unntak fra dette er når et nytt subnett legges til i Cerebrum, hvor description da hentes fra ovennevnte fil fra musevisa.uio.no. Merk at description, name_prefix og vlan_number foreløpig ikke vil eksporteres eller brukes i noen sammenhenger

2   Lagring i databasen

Data om subnett lagres i tabellen "dns_subnet", med følgende kolonner:

  • entity_type - Vil alltid være entity_dns_subnet i denne tabellen
  • entity_id - Unik entitets-ID; brukes internt i Cerebrum
  • subnet_ip - IP-delen av subnett-identifikatoren, f.eks. 129.240.123.120
  • ip_min - Laveste IP i subnettet, konvertert til heltall
  • ip_max - Høyeste IP i subnettet, konvertert til heltall
  • description - Tekststreng som beskriver subnettet
  • dns_delegated - Boolean for hvorvidt subnettet i DNS-sammenheng administreres annetsteds (f.eks. Ifi)
  • name_prefix - Navne-prefiks til bruk på subnettet; ikke i bruk foreløpig
  • vlan_number - Nummeret til evt. VLAN som er assosiert med subnettet
  • no_of_reserved_adr - Antall adresser som skal reserveres fra starten av subnettet.

3   Import av data om subnett

Det skal daglig gjennomføres import av data om subnett, basert på filer vedlikeholdt av nett-drift. Importen foregår slik:

  • Cerebrum henter filen subnets.txt fra /site-katalogen på musevisa. Den inneholder info om følgende:

    - 129.240-nettet
    - 158.36.0.0-nettet
    - 193.157-nettet
    

    Cerebrum tar ikke vare på noen historikk på disse filene; kun den sist hentede versjonen av hver fil vil være å finne på cerebellum.

    BSD har ansvar for å sørge for at cerebrum-brukeren fra cerebellum har mulighet for å scp'e/rsync'e disse filene passordløst fra musevisa til cerebellum.

  • Subnett som eksisterer i Cerebrum men ikke i subnets.txt slettes fra Cerebrum.

  • Deretter blir subnett som eksisterer i subnets.txt men ikke i Cerebrum lagt til i Cerebrum, med beskrivelsen angitt i subnets.txt.

  • Endringer i beskrivelse for subnett som allerede eksisterer i Cerebrum ignoreres.

  • Evt VLAN-info i subnets.txt eller i http://nett-info.uio.no/nett-doc/vlanibruk.txt anses ikke som tilstrekkelig pålitelig og sees derfor bort i fra. VLAN-info (dvs. at det ikke er VLAN-nummer registrert) som ligger i Cerebrum blir ikke oppdatert og brukes derfor ikke brukes i noen videre sammenheng.

  • Følgende situasjoner anses som feil under importen:

    • Et nytt subnett overlapper med et eksisterende subnett
    • Reserverte adresser for et nytt subnett er allerede i bruk
    • Et subnett som skal fjernes inneholder adresser som er i bruk.

    Dersom noe av dette avdekkes i løpet av importeringen så avbrytes importen i sin helhet, og alle data i Cerebrum bevares slik de var før importen begynte, dvs at ingen subnett slettes og ingen legges til.

  • Feilmeldinger fra importen sendes unix-vakter@usit.uio.no og til nett-drift@usit.uio.no med cc til cerebrum-logs@usit.uio.no. Unix-drift er ansvarlig for å rydde opp årsakene til evt feil som oppdages/meldes og deretter evt. varsle ukevakten for Cerebrum dersom man ønsker å kjøre ny import før neste skedulerte daglige import. Dersom importen gjør endringer men forløper ellers uten problemer så sendes mail til logs@usit.uio.no med oversikt over endringene som er gjort. Dersom ingen endringer gjøres, så skal det ikke sendes mail.

  • BSD og Cerebrum finner i samarbeid ut hvordan ulike feilsituasjoner og statusmeldinger skal presenteres i mailene som sendes.

  • Anders Odberg og Arne Vedø-Hansen samler og oppdaterer dokumentasjonen som er relevant for Cerebrum/DNS under /om/tjenestegrupper/cerebrum/dokumentasjon/ekstern/uio/dns/

3.1   Format på importfil

Filen som importeres er på følgende format:

  • Ett subnett pr linje
  • Linjer som er tomme eller begynner med '#' blir ignorert.
  • Hver linje inneholder følgende elementer, fra start til slutt:
    • Subnett-identifikator, f.eks. 129.240.28.0/23
    • Ett eller flere whitespace-tegn
    • Beskrivelse av subnettet, f.eks. Farmasi + div. Beskrivelse kan være tom, dvs at det eneste innholdet på en linje vil kunne være subnett-identifikatoren.

Linjen vil da se slik ut:

129.240.28.0/23 Farmasi + div

3.2   "DNS delegated"

Enkelte subnett som er å finne i subnets.txt administreres ikke via bofh/Cerebrum og er delegert ut til andre navnetjenere enn USIT sine autoritative tjenere (f.eks. nett som brukes av Ifi). Disse flagges ved at dns_delegated settes til True i databasen.

At et nett er "DNS delegated" innebærer følgende:

  • host add og host ptr_add tillater ikke at hoster legges til på nettet.
  • host a_add må force's for at man skal kunne legge til hoster på nettet.

4   Subnett-relatrete BOFH-kommander

subnet add og subnet remove inkluderes ikke i kommandosettet i denne omgang, siden importen spesifisert overfor er styrende for all info om eksistensen av gitte subnett.

SUBNET kan angis på en av 3 måter:

  • Full subnett-identifikator, f.eks. 129.240.0.0/26
  • En av IP-adressene som tilhører subnettet, f.eks. 129.240.6.242
  • Entitets-ID for subnettet. ID'en må i bofh prefikses med id:

Nedenfor er angitt hvilke kommandoer som er lagt til i forbindelse med denne oppdateringen; ingen eksisterende kommandoer har blitt endret.

4.1   Tilgjengelighet

Alle subnett-relaterte bofh-kommandoer er tilgjengelige for DNS-superbrukere. I tillegg så er subnet info og host used_list tilgjengelig for alle.

4.2   subnet info <SUBNET>

  • Gir info om et gitt subnett:
    • Subnett
    • Entitets-ID
    • Nettmaske (avledbart av subnett, men nyttig å ha oppgitt)
    • Description
    • Navne-prefiks
    • VLAN-nr
    • Hvorvidt DNS for subnettet er delegert eller ikke
    • IP-range for subnettet
    • Antall reserverte adresser på starten av subnettet
    • Liste med adressene som er reservert på subnettet

Eksempel:

bofh> subnet info 129.240.6.242
Subnet:                 129.240.6.224/27
Entity ID:              1799390
Netmask:                255.255.255.224
Description:            gt-klientnett
Name-prefix:            ''
VLAN:                   (None)
DNS delegated:          No
IP-range:               129.240.6.224 - 129.240.6.255
Reserved adr at start:  3
Reserved addresses:     129.240.6.224
                        129.240.6.225
                        129.240.6.226
                        129.240.6.255
bofh>

4.3   subnet set_vlan <SUBNET> <VLAN>

  • Setter(overskriver) VLAN på et subnett. Kan være tom.
  • Informerer om overskrivelse.
  • Inkludert med tanke på fremtidig bruk; VLAN-nr brukes ikke til noe pr i dag.

4.5   subnet set_name_prefix <SUBNET> <NAME-PREFIX>

  • Sette name_prefix for et subnett
  • Inkludert med tanke på fremtidig bruk; name_prefix brukes ikke til noe pr i dag.

4.6   subnet set_dns_delegated <SUBNET>

  • Designerer at DNS-administrasjon for et subnett er delegert annetsteds (utenfor Cerebrum).

4.7   subnet unset_dns_delegated <SUBNET>

  • Designerer at DNS-administrasjon for et subnett ikke er delegert annetsteds (utenfor Cerebrum).

4.8   subnet set_reserved <SUBNET> <NUMBER>

  • Sett antall reserverte adresser på subnett. Minimum NUMBER er 0. Reserverte adresser telles fra start av nettet. I tillegg kommer noen default-adresser (broadcast, samt reserveringer med tanke på fremtidige splits på større subnett)

4.9   host used_list <IP>

  • Lister adresser som er i bruk på subnettet som <IP> tilhører, samt tilhørende hostnavn.

Eksempel:

bofh> host used_list 129.240.6.242
Ip               Hostname
129.240.6.228    carom.uio.no.
129.240.6.229    zerg.uio.no.
129.240.6.230    annette.uio.no.
129.240.6.231    doolin.uio.no.
129.240.6.232    offside.uio.no.
129.240.6.233    bombur.uio.no.
129.240.6.234    snusmumrikken.uio.no.
129.240.6.235    manetheren.uio.no.
129.240.6.236    crux.uio.no.
129.240.6.237    josefine.uio.no.
129.240.6.240    tryll.uio.no.
129.240.6.241    melk.uio.no.
129.240.6.242    morpheus.uio.no.
129.240.6.250    sardell.uio.no.
129.240.6.251    glub.uio.no.
bofh>

5   Testing

5.1   Import

Importen er testet og skal være i orden. Innen dette blir prodsatt, så bør en testimprot kjøres med oppdatert importfil. Denne vil generere en dell feilmeldinger om at man legger til subnett hvor reserverte adresser er i bruk. BSD må få denne oversikten å si ifra hvorvidt det er samsvar med hvilke reserverte adresser som forventes å være i bruk.

BSD har tidligere fått en sammenligning mellom subnett-info som ligger på musevisa of subnett-info som per i dag brukes av Cerebrum (i form av cereconf_dns.py). Siden det er en stund siden denne sammenligningen ble laget, så lager Arne Vedø-Hansen en ny og sender til BSD.

5.2   BOFH-kommandoer

Etter at data er importert, bør ulike varianter av bofh-kommandoene kjøres for å sjekke at de virker slik de skal.

TODO: Anders Odberg legger til tester som skal gjøres med eksisterende kommandoer og eksporter.

5.2.1   subnet info

Sjekk at subnet info gir forventet resultat:

subnet info 129.240.6.242

5.2.2   subnet set_vlan

Sjekk at man får satt VLAN-ID, samt info før og etter:

subnet info 129.240.6.224
subnet set_vlan 129.240.6.224 123
subnet info 129.240.6.224

5.2.3   subnet set_description

Sjekk at man får satt og nullstilt description, samt info før og etter:

subnet info 129.240.6.224
subnet set_description 129.240.6.224 "GTs superdupernett"
subnet info 129.240.6.224
subnet set_description 129.240.6.224 ""
subnet info 129.240.6.224

5.2.4   subnet set_name_prefix

Sjekk at man får satt og nullstilt name_prefix, samt info før og etter:

subnet info 129.240.6.224
subnet set_name_prefix 129.240.6.224 gt_
subnet info 129.240.6.224
subnet set_name_prefix 129.240.6.224 ""
subnet info 129.240.6.224

5.2.5   subnet delegated

(Sjekk av kommandoene subnet set_dns_delegated og subnet unset_dns_delegated)

Sjekk at man får designert et subnett som delegert:

subnet info 129.240.6.224
subnet set_dns_delegated 129.240.6.224
subnet info 129.240.6.224

Sjekk at følgende kommandoer ikke virker:

host add blubb 129.240.6.224 linux blubb@usit.uio.no Blibb
host ptr_add 129.240.6.234 blibba

Sjekk at host a_add må force's:

host a_add blippa 129.240.6.224
host a_add blippa 129.240.6.224 yes

Sjekk at man får satt subnettet som ikke delegert igjen:

subnet unset_dns_delegated 129.240.6.224
subnet info 129.240.6.224

5.2.6   subnet set_reserved

Sjekk at man får endret på reserverte adresser, samt hvordan ting ser ut får og etter:

subnet info 129.240.6.242
subnet set_reserved 129.240.6.242 1
subnet info 129.240.6.242

Sjekk at feilmelding oppstår når man prøver å sette av for mange reserverte adresser:

subnet set_reserved 129.240.6.242 10

5.2.7   host used_list

Sjekk at listing av adresser i bruk gir forventet resultat:

host used_list 129.240.6.242

6   Produksjonssetting

Filer som trenger å oppdateres (til HEAD):

"cerebrum"-treet:

Cerebrum/default_config.py
Cerebrum/modules/dns/*
contrib/dns/import_subnet_info.py
contrib/migrate_cerebrum_database.py
design/migrate_to_dns_1_1.sql

"uiocerebrum"-treet:

cerebellum/etc/cerebrum/cereconf.py
cerebellum/etc/cerebrum/config.dat
cerebellum/etc/cerebrum/scheduled_jobs.py
cerebellum/etc/cerebrum/cereconf_dns.py (Fjernes)

For å gjennomføre oppgradering av databaseskjemaet og sette inn nye konstanter:

python makedb.py --stage metainfo design/mod_dns.sql
python makedb.py --update-codes
python contrib/migrate_cerebrum_database.py --component dns --from dns_1_0 --to dns_1_1 --makedb-path . --design-path design/

Sørg for at oppdaterte jobber har blitt lastet inn i job_runner:

/cerebrum/sbin/job_runner.py --reload

Hent over oppdatert subnets.txt:

/cerebrum/sbin/job_runner.py --run get_subnet_file

Deretter kjøres import av subnets.txt:

/cerebrum/share/cerebrum/contrib/dns/import_subnet_info.py \
   --datafile /cerebrum/dumps/dns/subnets.txt -s cerebrum-logs@usit.uio.no \
   -e cerebrum-drift@usit.uio.no --mail-from nobody@usit.uio.no \
   | tee /tmp/subnet_import.log

Denne vil ikke lykkes, fordi det allerede er en del reserverte adresser som er i bruk på ulike subnett. Kjøringen vil generere en liste over disse som må ack'es som OK av BSD innen man kan kjøre importen på nytt, med --force-opsjon:

/cerebrum/share/cerebrum/contrib/dns/import_subnet_info.py --force\
   --datafile /cerebrum/dumps/dns/subnets.txt -s cerebrum-logs@usit.uio.no \
   -e cerebrum-drift@usit.uio.no --mail-from nobody@usit.uio.no \
   | tee /tmp/subnet_import.log
Av DNS og Cerebrum
Publisert 4. sep. 2014 16:36