1

Мой ноутбук обычно подключается через Wi-Fi (старый T61 с Intel WM3945ABG). Для большей части моей работы этого достаточно. Время от времени я хотел бы подключиться к моей прекрасной проводной сети Ethernet на 1 ГБ. Но если я сделаю это наивно, nfs-маунты начнут зависать. (Если я размонтирую все nfs до изменения, все в порядке).

Например, мое резервное копирование начинается через anacron. Это включает монтирование резервного диска на моем сервере через nfs4. Скорее всего, я на Wi-Fi, если это произойдет. Если я сейчас подключу свой Ethernet-кабель, весь доступ к резервному диску приведет к непрерывному сну. Поскольку резервное копирование занимает довольно много времени (медленный Wi-Fi, помните?), Я не могу размонтировать и перемонтировать резервный диск.

Это включает заблокированные диалоги и оболочки (возможно, они сканируют все точки монтирования при открытии, я не знаю).

Я работаю с Linux начиная с Kernel 2.0.2 и, честно говоря, это единственная вещь в Linux, которая действительно сводит меня с ума, потому что я не могу ее решить.

Есть ли способ прозрачного обмена проводными и беспроводными сетями?

О, некоторые недостающие факты: в настоящее время я использую WICD, но раньше я пробовал NetworkManager. Я рассматриваю системный подход только ...

% /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)

Обе сети используют один и тот же IP и так далее ...

Скажите, пожалуйста, если вам нужна дополнительная информация!

1 ответ1

1

Без некоторой помощи на другой стороне, где сходятся ваши WLAN и GB LAN (т.е. ваш домашний маршрутизатор), или где находится другая точка связи, вы не сможете.

И это на самом деле не проблема Linux, а потому, что сетевые протоколы такие, какие они есть (по историческим причинам): и TCP, и UDP не поддерживают многоадресное переключение при сбое, то есть наличие нескольких интерфейсов с разными IP-адресами на одном конце, которые могут все использоваться эквивалентно.

Тем не менее, есть несколько способов сделать что-то подобное этой работе, но ни один из них не прост, я сам не пытался реализовать один из них, и потребуется немало усилий, чтобы заставить их работать, если они вообще работают :

1) Вместо TCP и UDP используйте протокол, который допускает многоадресное переключение при сбое, например SCTP. Хотя SCTP изначально доступен в ядре Linux, не многие используют его. Таким образом, вам нужно будет найти приложение, которое делает то, что вы хотите, и поддерживает SCTP на обоих концах, и удачи в этом. Или вам придется изменить существующие приложения, такие как NFS или резервную копию, для поддержки SCTP, и снова, удачи вам в этом.

Редактировать: Я обнаружил, что есть команда-обертка с именем withsctp которая заставляет упакованное приложение использовать SCTP вместо TCP. Я протестировал nc и socat с двумя парами соединений veth с сетевыми пространствами имен, и множественное переключение при сбое работает из коробки: отключение пары, в которой было инициировано соединение, не прерывает передачу, которая перемещается в другую пару. Но похоже, что оба сетевых интерфейса должны быть видны при установлении соединения, поскольку доступные адреса являются частью рукопожатия SCTP.

Я не тестировал, но это может работать для вашей программы резервного копирования или удаленных файловых систем FUSE, таких как SSHFS, или даже файловых систем ядра, таких как NFS.

2) Вы можете связать несколько интерфейсов вместе, смотрите linux/Documentation/networking/bonding.txt в исходниках ядра. Это на самом деле просто предназначено для соединения, например, параллельных соединений локальной сети в центре обработки данных. Вам нужно будет сделать это с обеих сторон, например, на вашем ПК и маршрутизаторе (что означает, что вам может потребоваться перекомпилировать ядро Linux вашей прошивки для маршрутизатора), и вам нужно убедиться, что оба интерфейса достаточно статичны ( особенно Локальная сеть). Если вы получите эту работу, мне будут интересны детали.

3) Вы можете попытаться настроить маршрутизатор таким образом, чтобы он предоставлял и вашему WLAN, и вашему интерфейсу LAN абсолютно одинаковый IP-адрес, и отключал интерфейс WLAN, как только он видит LAN. Для этого потребуется немало поработать с внутренними компонентами маршрутизатора, и, опять же, если вы получите эту работу, меня заинтересуют подробности.

Есть, вероятно, другие, столь же малоизвестные методы. Написание сценария, который размонтирует / перемонтирует NFS и проверяет, что вы не находитесь в середине резервной копии перед активацией интерфейса LAN, может быть проще.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .