解決方案已解釋這裡
問題
我的 Raspberry Pi 上有 3 個介面 eth0、wlan0、wlan1(2 個 wifi USB 轉接器)。
- wlan1 將用於透過 SSDP 連接到 WiFi 攝影機。
- 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 檔案並嘗試使用此檔案。這會將所有內容設為靜態(不變)。您必須使用 ifdown/ifup 重新啟動介面或重新啟動電腦。
答案2
如果我能很好地理解過去 24 小時內讀過的內容,我就需要做一些路由工作。
除非您想將系統設定為路由器,否則不會。
預設網關是 IP,如果目標不在任何網路介面的子網路遮罩範圍內,Linux 將發送流量。通常,這將是發送到「網路」的流量。
如果您不關心該系統是否可以訪問互聯網,則不需要,但您可能需要這樣做,它可以獲得更新等。
DHCP 通常會分發預設閘道和 IP 位址。因此,如果wlan0
從 DHCP 取得 IP,它可能也會取得預設閘道。 (或應該是,可能需要檢查您的 DHCP 伺服器是否未分發。)因此,發送到 Internet 的流量將通過該介面。
如果您不想使用 DHCP 或透過 DHCP 分發預設網關,您可以手動指定。它應該是可以轉送到 Internet 或從 Internet 轉送的路由器的 IP 位址。
如果您只有一個預設網關,事情會進行得最順利,因此請確保您的其他介面設定為靜態 IP,並且只有一個介面透過 DHCP 取得某些內容。
答案3
經過幾個小時的測試後,我自己回答了這個問題...
就解釋了這裡