对于特定子网添加路由以使服务器可以通过 VPN 直接访问?

对于特定子网添加路由以使服务器可以通过 VPN 直接访问?

我在隔离网络上有一台 Linux 机器,我通过 VPN 连接到该网络。当我使用 VPN 时,VPN 服务器会为我分配一个虚拟 IP,例如 192.168.251.x

我发现当我使用 VPN 时,我可以通过 RDP 连接到 Windows 盒子,没有问题。 Ping、http、rdp 等都可以工作。然而,Linux 盒子并不能立即访问。事实上,我必须首先将 RDP 连接到该隔离网络上的机器上,然后才能通过 ssh 进入 Linux 系统。

这告诉我 Linux 盒子只接受来自其本机子网上已有设备的流量,并且我需要告诉它接受来自外部设备所源自的虚拟 VPN 子网的流量。

我试过这个规则:

sudo iptables -A INPUT -p tcp -s 192.168.251.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

其中 192.168.251.0/24 是虚拟 VPN 子网。但我仍然无法从连接的主机上 ping Linux 机器。所以要么我添加了错误的规则,要么添加错误。有什么提示/指导吗?

user@HOST:~> uname -a 
Linux HOST 3.0.51-0.7.9-default #1 SMP Thu Nov 29 22:12:17 UTC 2012 (f3be9d0) x86_64 x86_64 x86_64 GNU/Linux

user@HOST:~> cat /proc/version Linux 
version 3.0.51-0.7.9-default (geeko@buildhost) (gcc version 4.3.4 [gcc-4_3-branch revision 152973] (SUSE Linux) ) #1 SMP Thu Nov 29 22:12:17 UTC 2012 (f3be9d0)

我是否添加了错误的规则或缺少规则?

编辑:

我当前的 iptables:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  192.168.251.0/24     anywhere            ctstate NEW,ESTABLISHED

此外,icmp 和 http/s 流量的数据包捕获显示从我的 VPN 客户端流向 Linux 计算机的流量,但从未显示任何来自 Linux 计算机的返回流量。甚至没有回复“无效的XXX”之类的。如果我没记错的话,这表明流量正在下降。

编辑:

user@HOST:~> ip route sh
127.0.0.0/8 dev lo  scope link
169.254.0.0/16 dev eth0  scope link
192.168.20.0/24 dev eth0  proto kernel  scope link  src 192.168.20.219

user@HOST:~> sudo iptables --list
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             192.168.251.0/24    ctstate ESTABLISHED

编辑:

我的解决方案是运行:

sudo ip route add default via 192.168.20.1

然后我可以通过 VPN 直接 ping 和 telnet 到该盒子。

答案1

Linux 盒子正在丢弃返回数据包,因为它没有返回 VPN 网络的有效路由。

假设您的网关位于192.168.20.1,将其添加为 Linux 机器上的默认路由可能会解决您的问题:

ip route add default via 192.168.20.1

相关内容