![无法在我的 Ubuntu 中添加静态路由,SIOCADDRT:网络不可达](https://linux22.com/image/680071/%E6%97%A0%E6%B3%95%E5%9C%A8%E6%88%91%E7%9A%84%20Ubuntu%20%E4%B8%AD%E6%B7%BB%E5%8A%A0%E9%9D%99%E6%80%81%E8%B7%AF%E7%94%B1%EF%BC%8CSIOCADDRT%EF%BC%9A%E7%BD%91%E7%BB%9C%E4%B8%8D%E5%8F%AF%E8%BE%BE.png)
我正在尝试在我的 VPS 中添加一条静态路由到位于 VPN 隧道另一端的客户端,并通过隧道转发其流量。
这是我计划添加路由的目的地的设置。Raspi 充当路由器,它本身连接到 AP,NAS 连接到 Raspi 并通过 VPN 隧道重定向其流量:
+--------------------------------+
| Raspi |
(192.168.0.101/24)| |(192.168.1.1/24)
(192.168.0.1/24) AP<>=================={wlan0 eth0}================<>NAS (192.168.1.102/24)
| \ / |
| +----------------------+ |
| | iptables and | |
| | routing engine | |
| +-----------+----------+ |
| | |
| {tun0} |
| 10.8.0.6 |
+--------------------------------+
我正在尝试这样做route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.8.0.6
,以便与 Raspi 后面的 NAS 进行通信,但我得到了SIOCADDRT: Network is unreachable
。
这些是服务器端信息:
$ ifconfig -a
eth0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
inet addr:217.B.C.D Bcast:217.B.C.D Mask:255.255.255.255
inet6 addr: XXXX::XXX:XXXX:XXXX:XXXX/XX Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1598 errors:0 dropped:0 overruns:0 frame:0
TX packets:1453 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:176137 (176.1 KB) TX bytes:165179 (165.1 KB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:9 errors:0 dropped:0 overruns:0 frame:0
TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:460 (460.0 B) TX bytes:460 (460.0 B)
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.8.0.1 P-t-P:10.8.0.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:169 errors:0 dropped:0 overruns:0 frame:0
TX packets:183 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:14825 (14.8 KB) TX bytes:15071 (15.0 KB)
$ netstat -anr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.255.255.1 0.0.0.0 UG 0 0 0 eth0
10.8.0.0 10.8.0.2 255.255.255.0 UG 0 0 0 tun0
10.8.0.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
10.255.255.1 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
$ IP 路由列表
default via 10.255.255.1 dev eth0
10.8.0.0/24 via 10.8.0.2 dev tun0
10.8.0.2 dev tun0 proto kernel scope link src 10.8.0.1
10.255.255.1 dev eth0 scope link
附加信息:
如果你想知道我是如何实现接口之间的流量重定向的,这里有我的帖子,描述了我如何使用 iptables 管理到目前为止的一切:
客户端网络阻塞(如果p2p拓扑):
10.8.0.4 : Network address
10.8.0.5 : Virtual remote endpoint; Non pingable; Only used for routing
10.8.0.6 : Client IP address
10.8.0.7 : Network broadcast address
更新 1:
我已将 VPN 服务器配置更改为topology subnet
,并ifconfig-push 10.8.0.6 255.255.255.0
在 VPN 客户端的相应ccd
文件中将 VPN 服务器和客户端带入/24
子网,而不是/32
,然后添加路由。这次route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.8.0.6
或route add -net 192.168.1.0 netmask 255.255.255.0 dev tun0
没有返回任何错误,但是 仍然没有ping 192.168.1.102
。netstat -anr
但是(在 的情况下)发生了变化route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.8.0.6
。
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.255.255.1 0.0.0.0 UG 0 0 0 eth0
10.8.0.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0
10.255.255.1 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
192.168.1.0 10.8.0.6 255.255.255.0 UG 0 0 0 tun0
答案1
我阅读了以下说明:
https://openvpn.net/index.php/open-source/documentation/howto.html#scope
我已经在VPS 上添加了,也route 192.168.1.0 255.255.255.0
添加到了客户端的相应文件中。然后我使用了命令,就这样!我可以从 VPS ping OpenVPN 客户端后面的客户端 :Dserver.conf
iroute 192.168.1.0 255.255.255.0
ccd
route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.8.0.6
192.168.1.102
附言:我还处于subnet topology
模式中。我还没有在正常模式下尝试过p2p topology
,但我认为它应该可以正常工作。