ping 绕过默认网关

ping 绕过默认网关

我有一个 ubuntu 服务器 16.04 设置作为我的网络上的 OpenVPN 网关,其 IP 为 192.168.10.14,通过 tun1 出去

任何使用 192.168.10.14 作为网关的客户端都会通过 VPN 隧道发送到互联网。如果我使用 ipleak.net,则每个客户端都具有 VPN 端点的 IP,而不是我自己的 IP

我在 VPN 网关 (192.168.10.14) 上设置了 UFW,因此如果我禁用 VPN 隧道,则任何客户端都无法再访问互联网,因为 UFW 仅允许通过 tun1 进行访问

我遇到的问题是,如果我禁用 192.168.10.14 上的 VPN 隧道,那么所有浏览器都会停止工作,而这正是我想要的。如果他们 ping google.com,则没有任何响应,这正是我想要的。但如果他们 ping 一个 IP 地址,比如 8.8.8.8,那么即使网关 VPN 已关闭,ping 仍然有效。在 ping 结果中我得到

64 bytes from 8.8.8.8: icmp_seq=6 ttl=57 time=19.1 ms
From 192.168.10.14: icmp_seq=7 Redirect Host(New nexthop: 192.168.10.1)
64 bytes from 8.8.8.8: icmp_seq=7 ttl=57 time=19.0 ms
64 bytes from 8.8.8.8: icmp_seq=7 ttl=57 time=18.6 ms

其中 nexthop 中的 192.168.10.1 是我的路由器。因此,对 IP 的 ping 忽略了 VPN 盒上的防火墙规则,或者 VPN 盒出于某种原因将其直接转发到路由器

我可以在 VPN 机器上做些什么来阻止这种情况吗?或者在客户端上?我更喜欢在 VPN 机器操作系统上,我没有(或可能无法)配置客户端

VPN 盒上的转发设置

iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o tun1 -j MASQUERADE
#
# For IP Forwarding through PIA
#
iptables -A FORWARD -i eth0 -o tun1 -j ACCEPT
iptables -A FORWARD -i tun1 -o eth0 -j ACCEPT

VPN Box 上的 ufw 规则

To                              Action      From
     --                         ------      ----
[ 1] OpenSSH                    ALLOW IN    Anywhere
[ 2] Anywhere                   ALLOW OUT   Anywhere on tun1           (out)
[ 3] Anywhere                   ALLOW IN    192.168.10.0/24
[ 4] 1198/udp                   ALLOW OUT   Anywhere                   (out)

VPN 盒上的路由(VPN 隧道启动)

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.6.10.5       128.0.0.0       UG    0      0        0 tun1
0.0.0.0         192.168.10.1    0.0.0.0         UG    0      0        0 eth0
10.6.10.1       10.6.10.5       255.255.255.255 UGH   0      0        0 tun1
10.6.10.5       0.0.0.0         255.255.255.255 UH    0      0        0 tun1
128.0.0.0       10.6.10.5       128.0.0.0       UG    0      0        0 tun1
172.98.67.68    192.168.10.1    255.255.255.255 UGH   0      0        0 eth0
192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0

VPN 盒上的路由(VPN 隧道关闭)

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.10.1    0.0.0.0         UG    0      0        0 eth0
192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0

从 VPN 盒 ping 到 8.8.8.8(VPN 隧道关闭)

PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted

客户端机器上的路由

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.10.14   0.0.0.0         UG    0      0        0 eth0
192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0

答案1

由于 VPN 盒上的默认路由,导致出现“绕过”问题。这是必需的,无法删除,并且 IP 转发仍处于启用状态。IP 转发基于接口,而不是 IP 地址

VPN box已打开ip 192.168.10.14,您可以添加插入ufw规则,当隧道关闭时将触发该规则。

添加/etc/network/if-down.d/一些脚本来切断客户端对您的VPN box

例子:

sudo nano /etc/network/if-down.d/scriptdown

并放入内容

# Check for specific interface if desired
[ "$IFACE" != "tun1" ] || exit 0
# cat access from client
sudo ufw insert 1 deny in on eth0 from 192.168.10.0/24 to 192.186.10.14 

给予scriptdown特权

chmod 755 /etc/network/if-down.d/scriptdown

if-down.d将触发在开始scriptdown时调用的脚本,并将拒绝从到的流量tun1down192.168.10.0/24192.168.10.14

您需要脚本来在tun1启动时删除此规则

添加/etc/network/if-up.d/脚本以允许客户端访问您的VPN box

sudo nano /etc/network/if-up.d/scriptup

并放入内容

# Check for specific interface if desired
[ "$IFACE" != "tun1" ] || exit 0
# cat access from client
sudo ufw delete 1 

给予scriptup特权

chmod 755 /etc/network/if-down.d/scriptup

if-up.d将触发执行scriptup时调用的脚本,并允许从到的流量tun1up192.168.10.0/24192.168.10.14

尝试。

相关内容