了解 WiFi 路由和網關

了解 WiFi 路由和網關

解決方案已解釋這裡

問題

我的 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

經過幾個小時的測試後,我自己回答了這個問題...

就解釋了這裡

相關內容