Linux作為路由器轉發

Linux作為路由器轉發

如何讓一個OpenStack實例將路由轉送到另一台不是OpenStack實例但在同一區域網路中的Linux機器?

PC_A has 192.168.1.133/27.
PC_B has 192.168.1.140/27.

PC_A has 10.26.14.16/25 route. 
PC_B has no 10.26.14.16/25 route.

我希望 PC_B 通過 PC_A 到達10.26.14.16/25

注意:PC_B 是一個 OpenStack 實例。它的私有IP是192.168.118.10/27,公用IP是192.168.1.140/27。

  FW----------PC_A--------------PC_B    
      [192.168.1.133/27]    [192.168.1.140/27]  Public  IP of B
                            [192.168.118.10/27] Private IP of B              

PC_A有10.26.14.16/25路由。 PC_B沒有10.26.14.16/25路由。我希望 PC_B 通過 PC_A 到達10.26.14.16/25

答案1

如果 PC_B 無法直接存取 192.168.1.* 網絡,則需要將缺少的路由添加到 OpenStack 網路設定中,而不是添加到 PC_B 中。

答案2

看起來很容易,但事實並非如此。相信我!

伺服器端配置[PC_A]

[PC_A ~]# nano /etc/sysctl.conf 
net.ipv4.ip_forward = 1


[PC_A ~]# iptables -t nat -A POSTROUTING ! -d 192.168.1.127/27 -o ens160 -j MASQUERADE

客戶端配置 [PC_B]

PC_B 是 Openstack 的一個實例。它的私有 IP 是192.168.118.10/27,公用 IP 是192.168.1.140/27

問題:

[PC_B ~]$ sudo route add default gw 192.168.1.133 eth0

SIOCADDRT: Network is unreachable


[PC_B ~]$ route

default         host-192-168-10 0.0.0.0         UG    0      0        0 eth0

192.168.118.0   0.0.0.0         255.255.255.240 U     0      0        0 eth0

為什麼SIOCADDRT: Network is unreachable?正如我已經提到的,PC_B 的公用 IP 是192.168.1.140/27[OpenStack 實例],其私有 IP 是192.168.118.10/27

相關內容