让 OpenVPN 客户端使用 OpenVPN 服务器的 eth0:1 IP 地址

让 OpenVPN 客户端使用 OpenVPN 服务器的 eth0:1 IP 地址

我有一台来自 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

相关内容