Понимание маршрутизации и шлюза WiFi

Понимание маршрутизации и шлюза WiFi

Решениеобъясняетсяздесь

Проблема

У меня на Raspberry Pi есть 3 интерфейса eth0, wlan0, wlan1 (2 USB-ключа Wi-Fi).

  • wlan1 будет использоваться для подключения к WiFi-камере через SSDP.
  • wlan0 будет использоваться для TCP-подключения к серверу (известен IP/доменное имя). Я ничего не знаю о WiFi, к которому wlan0 подключен через DHCP. Время от времени он может меняться. Он не знает шлюза.
  • eth0 будет использоваться для отладки доступа по SSH, например, через службу общего доступа к подключению моего MacBook Air.

На самом деле, все эти интерфейсы работают. Вот вывод ifconfig (wlan1 и eth0 находятся в одной сети, но в будущем это будет не так):

eth0      Link encap:Ethernet  HWaddr b8:27:eb:8c:e2:10  
          inet addr:192.168.0.19  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1174 errors:0 dropped:0 overruns:0 frame:0
          TX packets:141 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:93616 (91.4 KiB)  TX bytes:12342 (12.0 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

wlan0     Link encap:Ethernet  HWaddr c0:4a:00:2a:ab:6c  
          inet addr:192.168.43.44  Bcast:192.168.43.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1142 (1.1 KiB)  TX bytes:1145 (1.1 KiB)

wlan1     Link encap:Ethernet  HWaddr 74:da:38:0c:c6:f0  
          inet addr:192.168.0.14  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1480 errors:0 dropped:0 overruns:0 frame:0
          TX packets:155 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:222449 (217.2 KiB)  TX bytes:29711 (29.0 KiB)

А вот вывод sudo route -n:

0.0.0.0         192.168.0.254   0.0.0.0         UG    0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan1
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.43.0    0.0.0.0         255.255.255.0   U     0      0        0 wlan0

Если я правильно понял то, что прочитал за последние 24 часа, мне нужно заняться маршрутизацией. Но я не понимаю что и как. Нужно ли мне было менять маршрут по умолчанию? Если да, то как мне это сделать, если я не знаю шлюз wlan0 или wlan1 до подключения к сети? Это неразрешимая задача?

Редактировать: добавить /etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
        post-up route del default dev wlan0

auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
        wpa-ssid "wifi1"
        wpa-psk "psw1"

auto wlan1
allow-hotplug wlan1
iface wlan1 inet dhcp
        wpa-ssid "wifi2"
        wpa-psk "pwd2"

решение1

Вы можете посмотреть файл, расположенный в /etc/network/interfaces, чтобы найти шлюз по умолчанию. Вероятно, это 192.168.0.1, но я не уверен. Шлюз — это просто адрес вашего маршрутизатора.

Введите "cat /etc/network/interfaces", чтобы увидеть информацию. Редактируйте с привилегиями root (sudo), если хотите изменить это.

Попробуй это:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    # post-up route del default dev wlan0
    address 192.168.0.19
    netmask 255.255.255.0
    gateway 192.168.0.1

auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
    wpa-ssid "wifi1"
    wpa-psk "psw1"
    address 192.168.43.44
    netmask 255.255.255.0
    gateway 192.168.0.1

auto wlan1
allow-hotplug wlan1
iface wlan1 inet static
    wpa-ssid "wifi2"
    wpa-psk "pwd2"
    address 192.168.0.14
    netmask 255.255.255.0
    gateway 192.168.0.1

Сделайте резервную копию вашего оригинального файла /etc/network/interfaces и попробуйте этот вместо него. Это установит все в состояние static (неизменчивости). Вам придется перезапустить интерфейсы с помощью ifdown/ifup или просто перезагрузить компьютер.

решение2

Если я хорошо понимаю то, что прочитал за последние 24 часа, мне нужно заняться маршрутизацией.

Нет, если только вы не хотите настроить свою систему как маршрутизатор.

Шлюз по умолчанию — это IP, на который Linux будет отправлять трафик, если пункт назначения не попадает в диапазон масок подсети любого сетевого интерфейса. Обычно это будет трафик, предназначенный для «Интернета».

Если вам не важен доступ в Интернет для этой системы, то он вам не нужен, но, вероятно, нужен для получения обновлений и т. д.

DHCP обычно выдает шлюз по умолчанию, а также IP-адрес. Так что если wlan0получает IP от DHCP, то, вероятно, получает и шлюз по умолчанию. (Или должен, возможно, стоит проверить свой DHCP-сервер, если он его не выдает.) Так что трафик, предназначенный для Интернета, будет проходить через этот интерфейс.

Если вы не хотите использовать DHCP или раздавать шлюз по умолчанию через DHCP, вы можете указать его вручную. Это должен быть IP-адрес маршрутизатора, который может пересылать в/из Интернета.

Все будет работать лучше всего, если у вас будет только один шлюз по умолчанию, поэтому убедитесь, что все остальные интерфейсы настроены на статические IP-адреса и что только один интерфейс получает что-либо через DHCP.

решение3

Я сам ответил на этот вопрос после нескольких часов тестирования...

Это объяснитздесь

Связанный контент