Jak płynnie przełączać się między siecią przewodową i bezprzewodową?

2

Mój laptop jest zwykle podłączony przez Wi-Fi (stary T61 z Intel WM3945ABG). W przypadku większości moich prac to wystarczy. Od czasu do czasu chciałbym podłączyć się do mojej dobrej przewodowej sieci Ethernet o pojemności 1 GB. Ale jeśli zrobię to naiwnie, wierzchowce nfs zaczną się zawieszać. (Jeśli odmontuję wszystkie nfs przed zmianą, wszystko będzie w porządku).

Na przykład moja kopia zapasowa zaczyna się od anakrona. To inwoltuje montaż napędu kopii zapasowej na moim serwerze za pośrednictwem nfs4. Najprawdopodobniej mam połączenie Wi-Fi, jeśli tak się stanie. Jeśli teraz podłączę kabel Ethernet, cały dostęp do dysku zapasowego spowoduje nieprzerwany sen. Ponieważ tworzenie kopii zapasowej zajmuje trochę czasu (powolne Wi-Fi, pamiętasz?), Nie jestem w stanie odmontować i ponownie zamontować napędu kopii zapasowej.

Te inwolity blokowały dialogi i powłoki (być może skanują wszystkie punkty montowania po otwarciu, nie wiem).

Jestem z Linuksem od Kernela 2.0.2 i szczerze mówiąc, jest to jedyna rzecz z Linuksem, która naprawdę doprowadza mnie do szaleństwa, ponieważ nie jestem w stanie go rozwiązać.

Czy istnieje sposób przejrzystej wymiany sieci przewodowej i bezprzewodowej?

Och, kilka brakujących faktów: obecnie używam WICD, ale wcześniej wypróbowałem NetworkManager. Rozważam podejście systemowe ...

% /sbin/iwconfig wlan0

wlan0     IEEE 802.11  ESSID:"the-grue"
      Mode:Managed  Frequency:2.422 GHz  Access Point: 64:70:02:A2:67:DE
      Bit Rate=54 Mb/s   Tx-Power=15 dBm
      Retry short limit:7   RTS thr:off   Fragment thr:off
      Power Management:off
      Link Quality=70/70  Signal level=-33 dBm
      Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
      Tx excessive retries:0  Invalid misc:476   Missed beacon:0

% mount | grep nfs
zem:/backup on /media/backup type nfs4
(rw,relatime,vers=4.1,rsize=65536,wsize=65536,namlen=255,soft,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.178.63,local_lock=none,addr=192.168.178.2)

Obie sieci używają tego samego adresu IP i tak dalej ...

Proszę o informację, jeśli potrzebujesz dodatkowych informacji!

Markus
źródło

Odpowiedzi:

1

Bez pomocy po drugiej stronie, zarówno tam, gdzie twoja sieć WLAN i GB LAN są zbieżne (np. Domowy router), lub gdzie jest inny punkt komunikacji, nie możesz.

I to naprawdę nie jest problem z Linuksem, ponieważ protokoły sieciowe są takie, jakie są (z powodów historycznych): Zarówno TCP, jak i UDP nie obsługują przełączania awaryjnego multihoming, tj. Mają kilka interfejsów z różnymi adresami IP na jednym końcu, które mogą wszystkie być używane w sposób równoważny.

To powiedziawszy, istnieje kilka sposobów, aby coś takiego działało, ale żaden z nich nie jest łatwy, sam nie próbowałem zaimplementować jednego z nich i zajmie to znaczny wysiłek, aby działały, jeśli w ogóle działają :

1) Zamiast TCP i UDP użyj protokołu, który pozwala na przełączanie w tryb failover w trybie multihoming, na przykład SCTP . Chociaż SCTP jest natywnie dostępny w jądrze Linuksa, niewielu go używa. Musisz więc znaleźć aplikację, która robi to, co chcesz i obsługuje SCTP na obu końcach, i powodzenia. Albo będziesz musiał zmodyfikować istniejące aplikacje, takie jak NFS lub twoja kopia zapasowa, aby obsługiwały SCTP, i znowu, powodzenia.

Edycja : Odkryłem, że jest wywołane polecenie otoki, withsctpktóre powoduje, że opakowana aplikacja używa SCTP zamiast TCP. I przetestowane nci socatdwie pary vethpołączeń do nazw sieciowych i failover multihoming działa po wyjęciu z pudełka: zamykanie parę którym połączenie zostało zainicjowane nie przerwać transmisję, która zostaje przeniesiona do innej pary. Wygląda jednak na to, że oba interfejsy sieciowe muszą być widoczne po ustanowieniu połączenia, ponieważ dostępne adresy są częścią uzgadniania SCTP.

Nie testowałem, ale może to działać w przypadku Twojego programu do tworzenia kopii zapasowych lub FUSE zdalnych systemów plików, takich jak SSHFS, a nawet systemów plików jądra, takich jak NFS.

2) Możesz połączyć kilka interfejsów razem, patrz linux/Documentation/networking/bonding.txtźródła jądra. Ma to na celu połączenie np. Równoległych połączeń LAN w centrum danych. Będziesz musiał to zrobić po obu stronach, np. Na komputerze i routerze (co oznacza, że ​​może być konieczna rekompilacja jądra Linux oprogramowania układowego routera), a także upewnij się, że oba interfejsy są w miarę statyczne ( zwłaszcza WLAN). Jeśli dostaniesz tę pracę, będę zainteresowany szczegółami.

3) Możesz spróbować skonfigurować router, aby nadawał zarówno Twojemu WLAN, jak i interfejsowi LAN dokładnie ten sam adres IP oraz wyłączał interfejs WLAN, gdy tylko zobaczy LAN. Będzie to wymagało sporo zabawy z wewnętrznymi elementami routera, i znowu, jeśli dostaniesz tę pracę, będę zainteresowany szczegółami.

Istnieją prawdopodobnie inne, równie niejasne metody. Napisanie skryptu, który odmontowuje / ponownie podłącza NFS i sprawdza, czy nie jesteś w trakcie tworzenia kopii zapasowej, zanim aktywujesz interfejs LAN, może być łatwiejsze.

reż
źródło
Rozumiem i dziękuję bardzo za wasze wyjaśnienia i porady. Ale jest jedna rzecz, której wciąż nie rozumiem, niestety to brzmi jak przynęta płomienna, co z pewnością nie jest : W pracy mam laptopa z systemem Windows 7 w stacji dokującej. Cały czas montowanych jest kilka akcji. Kiedy wyjmuję laptopa ze stacji dokującej, a tym samym przełączam się z przewodowego na bezprzewodowy, nie zauważam żadnego problemu. Skoro powiedziałeś „A to naprawdę nie jest problem z Linuksem”, jaka jest różnica? Czy powinienem używać CIFS zamiast NFS?
Markus
Tak, CIFS używa zupełnie innego protokołu niż NFS (wiele transmisji, master koordynujący, Netbios na IP, itp. Zamiast zwykłego TCP) W końcu NFS został stworzony dla hostów, które mają statyczny adres IP. Nie próbowałem CIFS w systemie Linux z jednym hostem zmieniającym adresy IP, ale nie zdziwiłbym się, gdyby zadziałało po wyjęciu z pudełka. Istnieją również inne, bardziej specyficzne dla Uniksa, rozproszone FS, które również mogą działać (np. AFS ).
bezpośrednio
Edycja: wyjaśnione withsctpopakowanie. BTW, doceniam pozytywne głosy. :-)
reż
Jeszcze raz dziękuję - spojrzę na withsctp! Głosowałem za twoim postem, ale nie mam wystarczającej reputacji, aby od razu policzyć ...
Markus