Podróż międzysieciowa - łatwo i wygodnie
28 sierpnia 2007 12:42
Patryk Królikowski
Podróżując z laptopem pomiędzy kilkoma lokalizacjami (np. oddziałami firmy), za każdym razem, podłączając się do sieci LAN, jesteśmy zmuszeni do zmiany ustawień otoczenia sieciowego. Jest to niewygodne i uciążliwe.
Sprawa wydaje się błaha, ale wielokrotna zmiana adresacji podczas przemieszczania się pomiędzy labem, kilkoma łączami w firmie, oddziałami itp. to wyjątkowo żmudna praca. Trzeba pamiętać lub zapisywać wszystkie dane. Problem nie istnieje, jeżeli w każdej z lokalizacji funkcjonuje serwer DHCP. Wówczas nic prostszego, jak tylko powiązać go z adresem MAC karty sieciowej i stale otrzymywać te same dane konfiguracyjne. Ale często z różnych powodów nie uruchamia się serwerów DHCP. Rzućmy więc okiem na to, jak zautomatyzować przełączanie ustawień interfejsów sieciowych w zależności od lokalizacji - zarówno w Windows jak i Linuksie. Możemy postąpić na dwa sposoby - skorzystać z gotowych aplikacji albo przygotować własne skrypty. Zacznijmy od pierwszego rozwiązania.
Dla Windows większość aplikacji tego typu jest płatnych. Wyjątków jest niewiele. Za przykład niech posłuży NetSetMan (
www.netsetman.com), który dostępny jest nieodpłatnie, ale tylko pod warunkiem niekomercyjnego wykorzystywania. Chcąc skorzystać z każdego z komercyjnych rozwiązań musimy liczyć się z wydatkami - popularny Mobile Net Switch (
www.mobilenetswitch.com) to koszt 24 euro za użytkownika, a Network Configuration Manager (
www.missilesoft.net) to już 29 euro. Inny produkt - IP Switcher Basic (
www.softmate.co.kr) kosztuje 20 USD, zaś wersja pro 30 USD. W sumie to całkiem niedrogo, ale jest to kolejne oprogramowanie, które trzeba zainstalować i kolejna ikonka w pasku zadań. A poza tym po co płacić, jeżeli przy odrobinie własnej woli można podobną funkcjonalność osiągnąć wykorzystując skonstruowany w ciągu kilku minut skrypt, posługując się przy tym wbudowanymi mechanizmami systemu Windows (dla przykładu Windows XP).
Wszystkie niezbędne operacje można przeprowadzić przy pomocy poręcznego narzędzia Netsh. Aby móc skorzystać z zalet Netsh należy wszelkie działania wykonywać z poziomu użytkownika posiadającego uprawnienia administratora systemu. Do prawidłowego funkcjonowania narzędzia niezbędna jest biblioteka "framedyn.dll", która powinna znajdować się w katalogu "%SYSTEMROOT%\system32\wbem", a z kolei ścieżka do tego katalogu powinna być uwzględniona w zmiennych środowiskowych. Na wstępie należy przygotować dane, z których skorzysta Netsh podczas wywoływania skryptu zmiany ustawień sieciowych. Najprościej zrobić to poprzez skonfigurowanie interesującego nas interfejsu sieciowego metodą tradycyjną, a następnie zrzucenie tej konfiguracji do pliku (np.):
Netsh interface dump > centrala.txt
Teraz w zależności od tego, czy mamy Windows XP przynajmniej z SP1 czy nie, konieczne może być ręczne wyedytowanie zrzutu konfiguracji. Przed SP1, aby zrzut mógł być wykorzystany i działać bez zarzutu, trzeba było usunąć wszystkie wpisy "registry=PRIMARY". Po SP1 nie jest to już konieczne.
Powyższe czynności należy powtórzyć dla każdej z lokalizacji, w których zazwyczaj pracujemy. Aby załadować ustawienia wystarczy wywołać:
Netsh -f [nazwa_pliku_z_ustawieniami_lokalizacji]
lub stworzyć króciutkie skrypty.
A co z Linuksem? Tutaj znowu podejścia są dwa: korzystamy z gotowego oprogramowania albo ze skryptów, które będą ustawiały adresację interfejsów, zmieniały bramę domyślną czy zmieniały DNS w /etc/resolv.conf . Dużo też zależy od dystrybucji. Weźmy na przykład Red Hat-a (analogicznie Fedora Core, CentOS). Z pomocą przychodzą narzędzia systemowe "redhat-config-network" lub "system-config-network". Wystarczy skonfigurować profile i w zależności od lokalizacji przełączać się pomiędzy nimi. Możliwe jest też wskazanie profilu, który będzie aktywowany z poziomu boot loader-a np. Grub-a:
title CentOS_ServerCD (2.6.9-42.ELsmp) GDANSK
root (hd0,0)
kernel /boot/vmlinuz-2.6.9-42.ELsmp ro root=LABEL=/ netprofie=Gdansk
initrd /boot/initrd-2.6.9-42.ELsmp.img
Ciekawym rozwiązaniem jest ciągle rozwijany projekt o nazwie NetworkManager (
www.gnome.org/projects/NetworkManager/). Pozwala on na zautomatyzowanie procesu przyłączania do sieci. W przypadku sieci przewodowych jest on jednakże przydany w zasadzie tylko jeżeli obecny jest serwer DHCP. Pozwala też na łatwe przełączanie pomiędzy sieciami WiFi. Można również wykorzystać inne ciekawe narzędzie -
QuickSwitch (
muthanna.com/quickswitch/) . Pozwala ono na tworzenie zaawansowanych profili ustawień sieciowych, a następnie uruchamianie ich zarówno z poziomu CLI jak i X-owego GUI. Dostępny jest także plugin dla Gnome-a, który umożliwia przełączanie pomiędzy profilami przy pomocy ikony umieszczanej w pasku zadań. Przykład konfiguracji otoczenia sieciowego za pomocą QuickSwitch-a:
Fragment pliku /etc/switchto.conf
[Gdansk]
device=eth0
description=Biuro w Gdansku
hostname=CentOS5
FQHostname=CentOS.firma.pl
address=192.168.100.23
netmask=255.255.255.0
gateway=192.168.100.10
domain=firma.pl
dns1=192.168.100.2
dns2=192.168.100.3
usehosts=/etc/hosts.gdansk
Istnieje też szereg innych narzędzi, do których można sięgnąć, np.:
LaptopNet (
www.imfc.edu/~daniau/laptopnet/), paczka
laptop-net (dla Debiana) czy
netenv (
netenv.sourceforge.net/). Warto też z ciekawości rzucić okiem na projekty takie jak
Divine (
www.fefe.de/divine/) oraz
Intuitively (więcej informacji o konfiguracji na
www.wonder.pl/index.php/DebianIntuitively), które do wykrywania zmian w otoczeniu sieciowym wykorzystują pakiety ARP. Podobny mechanizm (wykorzystujący pakiety ARP) można zaimplementować ręcznie np. w systemie Gentoo. Aby było to możliwe należy najpierw upewnić się, że narzędzia takie jak
arping ora
iputils zostały zainstalowane. Następnie w pliku
/etc/conf.d/net wpisujemy odpowiednie ustawienia (tylko linie w kolorze czerwonym):
Włączamy tryb ARPING
config_eth0=( "arping" )
Wskazujemy bramę dla każdego z profili. Jeżeli w kilku profilach mamy taki sam adres bramy wówczas można także dopisać adres MAC.
gateways_eth0="192.168.190.1 172.16.34.1"
Ustawiamy adres i maskę podsieci jeżeli odnaleziony zostanie adres bramy 192.168.190.1
config_192168190001=( "192.168.190.11/24" )
Wskazujemy "default gateway" dla bramy 192.168.190.1
routes_192168190001=( "default via 192.168.190.2" )
Następnie określamy adresy serwerów DNS (również dla bramy 192.168.190.2)
dns_servers_192168190001=( "192.168.190.2" )
Podobnie postępujemy definiując kolejny profil (w tym samym pliku)
config_172016034001=( "172.16.34.10/24" )
routes_172016034001=( "default via 172.16.34.2" )
dns_servers_17201634001=( "172.16.34.2" )
Wreszcie, jeżeli żadna ze wskazanych bram nie zostanie odnaleziona, może zostać wykorzystany serwer DHCP
fallback_eth0=( "dhcp" )
Na koniec należy przeładować konfigurację sieci:
/etc/init.d/net.[nazwa interfejsu] restart
Zobacz w PPS: Sieci WLAN