Innhold
- 1 Autoritative kilder for data om subnett
- 2 Lagring i databasen
- 3 Import av data om subnett
- 4 Subnett-relatrete BOFH-kommander
- 4.1 Tilgjengelighet
- 4.2 subnet info <SUBNET>
- 4.3 subnet set_vlan <SUBNET> <VLAN>
- 4.4 subnet set_description <SUBNET> <DESCRIPTION>
- 4.5 subnet set_name_prefix <SUBNET> <NAME-PREFIX>
- 4.6 subnet set_dns_delegated <SUBNET>
- 4.7 subnet unset_dns_delegated <SUBNET>
- 4.8 subnet set_reserved <SUBNET> <NUMBER>
- 4.9 host used_list <IP>
- 5 Testing
- 6 Produksjonssetting
1 Autoritative kilder for data om subnett
Filen subnets.txt i katalogen /site på musevisa.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.4 subnet set_description <SUBNET> <DESCRIPTION>
- Sette description for et subnett
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.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