我有一台运行 Ubuntu Server 12.04 的无头家庭服务器。第三方网站(我订阅了该网站)定期向我家庭服务器上的守护进程发送命令,守护进程随后响应第三方网站。使用静态 IP 寻址、动态 DNS 客户端和调制解调器上的端口转发,一切正常;一切正常!
但是,我现在想在我的服务器上使用 OpenVPN 客户端通过第三方 VPN 服务器隧道传输/路由服务器流量。我已成功在我的服务器上安装和配置了 OpenVPN 客户端,但发现在 OpenVPN 运行时,我的服务器要么未收到来自第三方网站的命令,要么我的服务器未向第三方网站确认该命令。如果我在服务器上停止 OpenVPN,它就会再次运行。
我怀疑问题在于第三方网站将命令发送到我的服务器(通过调制解调器和端口转发),但答复是通过 VPN 路由的,而不是通过它来自的 eth0 返回。
下图给出了我的家庭网络的基本概述。
我不确定需要什么进一步的信息,但希望以下内容足以解决问题。
VPN 处于活动状态的 ifconfig 输出
$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:07:e9:08:02:17
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::207:e9ff:fe08:217/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:155309 errors:0 dropped:0 overruns:0 frame:0
TX packets:141790 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:211724221 (211.7 MB) TX bytes:20656517 (20.6 MB)
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:16436 Metric:1
RX packets:43 errors:0 dropped:0 overruns:0 frame:0
TX packets:43 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2368 (2.3 KB) TX bytes:2368 (2.3 KB)
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00- 00-00-00
inet addr:10.167.1.6 P-t-P:10.167.1.5 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 B) TX bytes:264 (264.0 B)
route
未运行 OpenVPN的输出
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default modem 0.0.0.0 UG 100 0 0 eth0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
route
OpenVPN 运行时的输出
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 10.111.1.5 128.0.0.0 UG 0 0 0 tun0
default modem 0.0.0.0 UG 100 0 0 eth0
10.111.1.1 10.111.1.5 255.255.255.255 UGH 0 0 0 tun0
10.111.1.5 * 255.255.255.255 UH 0 0 0 tun0
us-west.private modem 255.255.255.255 UGH 0 0 0 eth0
128.0.0.0 10.111.1.5 128.0.0.0 UG 0 0 0 tun0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
我发现一些其他论坛也有类似的问题,但无法应用其中的信息来解决我的具体问题。
http://www.overclock.net/t/1043127/solved-openvpn-client-blocks-inbound-ports
https://forum.linode.com/viewtopic.php?t=8737
更新:有人告诉我要调查基于策略的路由,这让我想到了类似的问题(在 DD-WRT 上启用 OpenVPN 客户端时,远程 SSH 访问不起作用) 但目前还没有答案。
答案1
VPN 连接后运行以下命令
ip rule add from 192.168.1.1 table 10
ip route add default via 192.168.1.254 table 10