
我得到以下場景:
ubuntu 伺服器 20.04 lts,為簡單起見,命名為 A 伺服器,具有以下網路介面:
- 環回
- enp1s0(廣域網路)公用 IP/23
- enp8s0(區域網路)10.9.96.3/20
- ppp0 (l2tp) 192.168.42.1
使用此路由表(故意省略公共路由):
- 10.9.96.0/20 dev enp8s0 原型核心範圍連結 src 10.9.96.3
- 192.168.1.0/24 通過 192.168.42.10 dev ppp0
- 192.168.42.10 dev ppp0 proto 核心範圍連結 src 192.168.42.1
有一個遠端 VPN 用戶端與 ip 192.168.42.10 連線。
該客戶端是一個 MikroTik 路由器,提供遠端 LAN 網路 192.168.1.0/24
使用我新增的靜態路由(192.168.1.0/24 透過 192.168.42.10 dev ppp0)我能夠存取 192.168.1.0//124 裝置。
另一個 ubuntu 伺服器 20.04 lts,為簡單起見,命名為 B 伺服器,具有以下網路介面:
- 環回
- enp1s0(廣域網路)公用 IP/23
- enp8s0(區域網路)10.9.96.4/20
和這個路由表(公共路由故意省略):
- 10.9.96.0/20 dev enp8s0 原型核心範圍連結 src 10.9.96.4
基本上我需要從伺服器 B 存取 192.168.1.0/24 設備,但我無法使其工作。
我還嘗試在此伺服器內通過 10.9.96.3 dev enp8s0 添加靜態路由:192.168.1.0/24,
但沒有成功,我看到發送到192.168.1.X 的封包到達伺服器A,但隨後它們沒有轉發到ppp0我猜想是介面(所以我也嘗試了一些 iptables 規則)
如何解決這個問題?
兩台伺服器中的防火牆均已停用。
答案1
筆記:在這個答案中,網路100.64.10.0/23
代表公共網路。它並不是特別相關,但存在只是為了使這些虛擬節點的網路配置與您在問題中所描述的相匹配。
您的問題是 192.168.1.0/24 網路上的主機不知道如何到達 10.9.96.0/20 網路。
根據您在問題中向我們展示的內容,microtik 路由器 (192.168.42.10/192.168.1.1) 上的路由表可能如下所示:
192.168.1.0/24 dev h1-eth0 proto kernel scope link src 192.168.1.1
192.168.42.0/24 dev h1-eth1 proto kernel scope link src 192.168.42.10
serverA 上的路由表如下所示:
default via 100.64.10.1 dev serverA-eth0
10.9.96.0/20 dev serverA-eth1 proto kernel scope link src 10.9.96.3
100.64.10.0/23 dev serverA-eth0 proto kernel scope link src 100.64.10.10
192.168.1.0/24 via 192.168.42.10 dev serverA-eth2
192.168.42.0/24 dev serverA-eth2 proto kernel scope link src 192.168.42.1
在 上serverA
,當您 ping 網路上的位址時192.168.1.0/24
,您的來源位址是192.168.42.1
。 microtik 路由器有該網路的路由,所以一切都很好。
如果serverB
你有一個像這樣的路由表:
default via 100.64.10.1 dev serverB-eth0
10.9.96.0/20 dev serverB-eth1 proto kernel scope link src 10.9.96.4
100.64.10.0/23 dev serverB-eth0 proto kernel scope link src 100.64.10.20
192.168.1.0/24 via 10.9.96.3 dev serverB-eth1
然後,當您嘗試連接到網路上的位址時192.168.1.0/24
,您的來源位址將為10.9.96.4
。 microtik 路由器不知道如何到達該位址(或者它嘗試透過預設閘道回應,這是不合適的)。
解決方案是向 microtik 路由器新增一條路由,如下所示:
ip route add 10.9.96.0/20 via 192.168.42.1
現在:
- ServerB 可以 ping microtik 路由器,因為 microtik 路由器有傳回 serverB 的有效路由
- 伺服器B可以ping通其他網路上的主機
192.168.1.0/24
,因為這些主機使用 microtik 路由器 (192.168.1.1
) 作為其預設閘道...並且如上一個要點所建立的,路由器具有適當的路由。