我有一台 Linux 机器,它设置为自动将 VPN 隧道连接到公司网络。这台机器设置为通过隧道将来自本地网络的流量(目的地为 194.1.0.0/16** 和 10.0.0.0/8)NAT 到公司网络的机器。
本地网络上的客户端设置为该服务器的 IP 作为其默认网关,通过 dhcp 发出。
这一切都运行良好,只是发往互联网的流量也通过此主机路由。即客户端 A (192.168.1.144) 想要与 Google 的 DNS 服务器 (8.8.8.8) 通信。当前发生的情况是,它将数据包发送到 VPN 主机 (192.168.1.108),然后由 VPN 主机将其发送到 ADSL 路由器 (192.168.1.254),由 ADSL 路由器通过互联网转发。然后,响应 (大概) 通过 VPN 主机返回,然后到达 A。
我希望 VPN 服务器在收到数据包时不是发往 VPN 末端网络的数据包,以 ICMP 重定向进行响应,指示 A 通过 192.168.1.254 发送。这样就可以减轻 VPN 服务器的负载。
我曾尝试在 DHCP 服务器(Ubuntu 16.04.1 LTS 上的 ISC DHCPD)中设置静态路由,以便所有设备的默认网关都是 192.168.1.254,并且可以通过 192.168.1.108 访问 VPN 主机,但我要么配置错误,要么各种客户端无法获取选项。客户端包括各种 Windows 计算机(7 和 10)、Linux 计算机(主要是 Ubuntu)和 Android 设备。
VPN 服务器运行的是 Ubuntu 16.04.1 LTS。以下脚本设置 NAT:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables-restore <<EOF
*nat
-A POSTROUTING -j MASQUERADE
COMMIT
EOF
机器上的路线是:
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.254 0.0.0.0 UG 0 0 0 ens2
10.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 ppp0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 ens2
194.1.0.0 0.0.0.0 255.255.0.0 U 0 0 0 ppp0
194.1.1.220 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
任何帮助实现此功能的帮助都将不胜感激。如果我遗漏了任何可能相关的信息,请告诉我。
** - 请不要质疑为什么我的内部网络部分不在私有 IP 地址范围内。我继承了这个问题,一旦我继承的其他问题得到解决,我就会修复它***。
***——这可能需要一段时间。