我有一台来自 Hetzner 的 VPS(Debian 10),其 eth0 -> IP 为 22.22.22.22
然后我添加了一个浮动 IP,现在也有 eth0:1 -> IP 44.44.44.44
在 OpenVPN server.conf 上我添加了local 44.44.44.44
它以便监听浮动 IP。
然后我重启了 OpenVPN/etc/init.d/openvpn restart
这是我在 iptables -S 上看到的:
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -i tun0 -j ACCEPT
-A INPUT -i eth0:1 -p udp -m udp --dport 1194 -j ACCEPT
-A FORWARD -i tun0 -o eth0:1 -j ACCEPT
-A FORWARD -i eth0:1 -o tun0 -j ACCEPT
在客户端 .ovpn 配置文件中我添加了以下内容:
remote 44.44.44.44 1194
一切正常,唯一的问题是,在 OpenVPN 客户端(Windows 10)上,当我连接到 OpenVPN 服务器时,它使用 eth0 22.22.22.22 的 IP 地址,而不是 eth0:1 的 44.44.44.44
你有什么建议来解决这个问题吗?
输出ip route show
如下:
default via 172.31.1.1 dev eth0
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.1
172.31.1.1 dev eth0 scope link
输出if config
如下:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 22.22.22.22 netmask 255.255.255.255 broadcast 22.22.22.22
ether 44:00:00:4b:4e:1d txqueuelen 1000 (Ethernet)
eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 44.44.44.44 netmask 255.255.255.255 broadcast 0.0.0.0
ether 44:00:00:4b:4e:1d txqueuelen 1000 (Ethernet)
tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500
inet 10.8.0.1 netmask 255.255.255.0 destination 10.8.0.1
输出/etc/network/interfaces.d/60-my-floating-ip.cfg
如下:
auto eth0:1
iface eth0:1 inet static
address 44.44.44.44
netmask 32
我想让 OpenVPN 客户端使用来自 OpenVPN 服务器的 IP 44.44.44.44 (eth0:1)。
答案1
好的,我通过以下步骤解决了这个问题:
首先刷新任何 NAT iptables 规则:
iptables -t nat -F
并添加一个新的 NAT 规则,如下所示:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source 44.44.44.44
然后只需/etc/iptables/add-openvpn-rules.sh
像这样编辑:
#iptables -t nat -I POSTROUTING 1 -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-soure 44.44.44.44