Решениеобъясняетсяздесь
Проблема
У меня на 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
Я сам ответил на этот вопрос после нескольких часов тестирования...
Это объяснитздесь