对不起我的英语不好。
我有 2 个 VirtualBox VM。其中一个Debian 8另一个是Ubuntu 服务器 14.04 LTS。两台机器都配置了桥接网络适配器。两台机器都有相同的 MAC 地址和 IP 地址(我从不同时使用它们)。
在两个虚拟机中,我都安装了CheckPoint VPN客户端(韓國)。在这两种情况下,我都可以毫无问题地连接到远程 VPN 服务器。当我连接到远程服务器时,动态网络接口处于启用状态(通迅)。远程 LAN 地址是xxx/24。
为了与我的局域网中的计算机共享 VPN 连接,我在两个虚拟机中都激活了 IP 转发(sysctl -w net.ipv4.ip_forward=1),并且我设置了以下 iptables 规则:
iptables -t nat -A POSTROUTING -s yyyy/24 -o tunsnx -j MASQUERADE
我还为 LAN 中的所有计算机添加了到 xxxx/0 网络的路由:
路由添加 xxxx 掩码 255.255.255.0 yyy21(Windows 主机)
yyy21是虚拟机的 IP,年/24是我的本地网络地址。这样我就可以从本地网络的任何计算机通过 VM 连接到远程服务器。一切正常。
我知道当我重启机器时,我这里提到的所有配置都会消失。不用担心。
现在我已经更新了我的两个虚拟机:Debian 8到Debian 9以及来自Ubuntu 14.04 LTS到Ubuntu 16.04 LTS我重复了所有过程:安装 snx 程序、激活 IP 转发并设置 iptables 规则。我可以从两个 VM 毫无问题地连接到远程服务器,但我无法从 LAN 中的任何其他计算机连接到远程服务器。
我做了一些测试。我在两个虚拟机中安装了其他 NIC,并将它们连接到私有网络中的另一个虚拟机(zzzz/24),我可以看到 IP 转发和 iptables 规则都正常。IP 转发在年/24和zzzz/24网络没有问题,但无法在年/24和xxx/24网络。
我在谷歌上搜索了几天,但没有发现任何有用的东西。
我错过了什么?
提前致谢。
答案1
改用源 nat,因为伪装时错误的源 ip 进入隧道:tun_ip=$(ip a | grep tunsnx | grep inet | awk '{print $2;}')
iptables -t nat -A POSTROUTING -o tunsnx -s yyyy/24 -j SNAT --to $tun_ip