Utføre Definerte handlinger når Network Goes On /Offline

Network brukes av mange Linux-distribusjoner du lar maskinen koble til kablede og trådløse nettverk automatisk. Network kan huske legitimasjonen du trenger for å autentisere med wifi-nettverk og kan få online automatisk når visse nettverk er oppdaget.

Det er ofte slik at du vil ha ulike nettverkskonfigurasjoner avhengig av om du er hjemme eller ikke. For eksempel vil du kanskje tillate noen tjenester på en laptop til kun tilgjengelig hvis du er koblet til din lokale wifi tilgangspunktet over WPA2. Du kan også gjerne ha den bærbare datamaskinen automatisk montere en haug med NFS filsystemer når du kobler til hjemme wifi aksesspunkt.

Når Network bringer opp en nettverkstilkobling det kjører skript som er lagret i /etc /Network /dispatcher.d starter med den laveste numerisk filnavnprefikset og arbeider til det høyeste. For eksempel kjører 00-netreport før 05-netfs på en Fedora maskin. For denne artikkelen vil jeg bruke 99-custom-script-fil for å sikre mine tilpasninger løpe etter de vanlige system skript.

Network kaller disse skriptene med navnet grensesnitt som første argument og strengen "opp" eller "ned" som andre argument. Det første 99-custom-script-filen gjør er å sjekke om det trådløse grensesnittet blir handlet på, og hvis så det bestemmer navnet og nøkkelen til wifi-nettverk er koblet også. Basert på navnet og /eller nøkkel av wifi-nettverk, er iptables og NFS-monteringer endret bringe grensesnittet opp og ned.

Den første delen av skriptet er vist nedenfor. Det trådløse grensesnittet på denne bærbare er eth1 som er erklært på toppen av filen. Hvis Network opptrer på $ iface = eth1 da manuset avgjør både nettverksnavnet og nøkkelen som ble brukt til å koble til. Bruke senere som en dobbeltsjekk er en stor ekstra forholdsregler i tilfelle en angriper bestemmer seg for å tilby en ukryptert nettverk som tilfeldigvis har navnet skriptene forvente for hjemmenettverket. Paranoia er en dyd når det kommer til sikkerhet.

For de som ikke er så kjent med sed, slår -r alternativet på lengre regulære uttrykk, -n alternativet undertrykker vanlig utskrift av hver linje. En spasertur gjennom av sed script som brukes til å finne nøkkelen er at det ser ut for en linje som inneholder kryptering, ignorerer alle ikke samsvarende linjer. På grunn av den -n alternativet, er linjer som ikke inneholder strengen "Encryption" stille ignorert. Hvis en linje ikke inneholder "Encryption" så alt før første kolon er kastet bort, og umbrakonøkkelen er hentet inn i et vanlig uttrykk fangst. Substitusjons vil erstatte hele linjen med bare umbrakonøkkelen. Den sed "p" kommandoen brukes til å skrive ut linjen (som er bare nøkkelen nå), og "q" er brukt for å slutte umiddelbart.

 #! /Bin /bashIFACE = "eth1" hvis [" x $ 1 "=" x $ iface "]; deretter # Finne ut wifi SSID SSID = $ (/sbin /iwconfig $ iface | sed -r -n '/SSID/{s/.*SSID:"([^"]+)".*/\\1/g; p; q}) KEY = $ (/sbin /iwconfig $ iface | sed -r -n '/Encryption/{s/.*:([0-9A-F-]+).*/\\1/g; p;. q}) 

Resten av skriptet er vist nedenfor velger jeg å få opp og ned mounts nettverk basert på nettverksnavnet i stedet for wifi-tasten på nettverket jeg vil heller sette en sjekk til. håndheve at wifi nøkkelen er riktig for nettverksnavnet i 99-custom-scripts enn spre wifi nøkkelen inn i /etc /fstab.

Den første sjekken er på nettverksnavnet, for en sikrere konfigurasjon, bør KEY også bli sjekket for å se at det er riktig. Hvis nettverket blir brakt opp så spesielle iptables regler er lastet og de får tilbakestilt til system misligholder log ut. The fstab og awk linjen ser for en spesiell markør for en mount "mount-on-wifi-nett", som kan vises i en kommentar på slutten av linjen. Hvis mount-on-wifi-nett er etterfulgt av navnet på nettverket blir koblet for deretter filsystemet nevnt er montert. Den avmontere linje inneholder en l å sikre at skriptet ikke blokkerer under utlogging.

 case "$ SSID" i "Himitsu") logger "som starter wifi-tilkobling til $ SSID" hvis ["$ 2" = " opp" ]; deretter iptables-restore < /etc/sysconfig/iptables.home cat /etc /fstab | awk \\ '{if (kamp ($ 0, "mount-on-wifi-nettet *." net)) {system (op "" $ 2)}} op = montere netto = $ SSID annet tac /etc /fstab | awk \\ '{if (kamp ($ 0, "mount-on-wifi-net. *" net)) {system (op "" $ 2)}} op = "umount -l" net = $ SSID iptables-restore < /etc /sysconfig /iptables fi;; esacfi 

​​Legg merke til at tac kommandoen brukes under avmontere. Tac fungerer som katten kommando, bortsett fra at linjene blir skrevet ut fra siste til første. Dette lar deg spesifisere NFS monteringer som er avhengige av hverandre, for eksempel /usr og /usr /local, så lenge /usr vises før /usr /local i /etc /fstab det vil bli montert før /usr /local og umonterte etter /usr /local i kraft av tac kommandoen.

En NFS aksje som vil automatisk bli montert og umontert kan da beskrives ved å legge det til /etc /fstab med noauto filsystemet alternativet for å hindre montere forsøk ved oppstart av systemet

 foo. /bar /bar nfs defaults, noauto 0 0 # mount-on-wifi-net = Himitsu 

Det er noen problemer med de ovennevnte skript. Hvis du har to wifi nettverksnavn der en er et prefiks av de andre, for eksempel foo og foobar, deretter monterer ment bare for foobar vil fortsatt ha et forsøk gjort ved tilkobling til foo. Ved hjelp av kommentarer i /etc /fstab også en tendens til å gjøre linjene for auto mounts ganske lang.

Undervisning Network hvordan du ønsker å endre nettverks tilstedeværelse avhengig av hvilken wifi tilgangspunkt brukes kan gjøre ved hjelp av en laptop mye mer beleilig. Spesielt å ha nettverks aksjer automatisk tilgjengelig når du er på troverdige wifi aksesspunkter tar litt av stresset ut av stadig endring wifi aksesspunkter med en bærbar datamaskin.