当 OpenVPN 客户端运行时,我的家庭服务器如何接受并回复来自互联网的连接?

当 OpenVPN 客户端运行时,我的家庭服务器如何接受并回复来自互联网的连接?

我有一台运行 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

routeOpenVPN 运行时的输出

$ 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

相关内容