兩個不同介面存取不同子網路IP

兩個不同介面存取不同子網路IP

我正在嘗試設定我的 Raspberry Pi,以允許我存取連接到 eth0 或 wlan1 的裝置。

想要的功能是這樣的:

  • 使用者透過 wlan1 連接到 RPi AP 並獲得 IP (192.168.4.x)
  • 獨立設備透過 eth0 連接到 RPi 並獲得 IP (192.168.5.x)
  • 使用者可以透過其本地IP位址存取eth0連接設備的設定介面

我已經使用 dnsmasq 在每個介面上設定 DHCP 伺服器,它們非常樂意提供 IP;

# dnsmasq.conf
interface=wlan1
dhcp-range=wlan1,192.168.4.2,192.168.4.99,24h

interface=eth0
dhcp-range=eth0,192.168.5.1,192.168.5.99,24h

listen-address=::1,127.0.0.1,192.168.5.1,192.168.4.1

我還更新了 iptables 以在介面之間轉送流量;

sysctl -w net.ipv4.ip_forward=1
iptables -A FORWARD -i wlan1 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o wlan1 -j ACCEPT

然而,當涉及到實際存取不同的 IP 時,我仍然有點迷失。我相信我需要設置一些路線,但我正在努力弄清楚如何準確地實現這一點。

透過 wlan0 連接 Ping 192.168.4.x 和 192.168.5.x IP: 在此輸入影像描述

以及來自 eth0 連接的 ...4.x 和 ...5.x: 在此輸入影像描述

iptables 和 netstat 輸出:

pi@rak-gateway:~ $ sudo iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
pi@rak-gateway:~ $ netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 wlan0
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 wlan0
192.168.4.0     0.0.0.0         255.255.255.0   U         0 0          0 wlan1
192.168.5.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0

答案1

然而,當涉及到實際存取不同的 IP 時,我仍然有點迷失。我相信我需要設置一些路線,但我正在努力弄清楚如何準確地實現這一點。

關於路由要記住的一點是路徑上的每台計算機必須知道將特定資料包發送到哪裡。

因此,如果 A 以 192.168.4.x 連接到 RaspPi,B 以 192.168.5.y 連接到 RaspPi,則

  • 必須知道寄往 192.168.5.*/24 的封包會轉到 192.168.4.? RaspPi 的位址。
  • B、當它應答時,必須知道發往 192.168.4.*/24 的封包會轉到 192.168.5.? RaspPi 的位址。

如果 A 和 B 僅連接到 RaspPi,並將 RasPi IP 位址設定為預設網關,則您可以免費獲得此服務。如果不是這種情況,例如因為 A 和 B 也連接到其他設備,或者因為您沒有設定dnsmasq通告預設網關,那麼您需要設定路由分別在 A 上。乙

您可以直接在 A 或 B 上靜態執行此操作,或者使用 DHCP 來分發路由(第一個 google 鏈接,了解操作方法這裡,谷歌了解更多)。

無論如何,調試應該包括查看路線在 A 和 B 上(在 Linux 上,您可以使用ip route get 1.2.3.4,其中 1.2.3.4 是目標位址)。

答案2

感謝您的更新。

我建議的第一件事是您將eth0DHCP 範圍固定為起始於192.168.5.2- 目前似乎起始於192.168.5.1

接下來要發佈的是 via 連接的設備的路由表eth0,以及 via 連接的設備的路由表wlan1

在取得路由表之前,請確保兩台裝置均已成功執行 DHCP,並且在您期望的子網路中擁有位址。

相關內容