我有两个运行 Xen 4.2 的节点服务器——我将它们称为节点 A 和节点 B。
节点 A 运行 OpenVPN 作为服务器。节点 B 运行 OpenVPN 作为客户端。两个节点都托管多个 Xen 客户虚拟机。节点 A 和节点 B 通过 OpenVPN 连接在一起,节点 A 为 10.0.0.1,节点 B 为 10.0.0.2。
问题就出在这里:
如果我通过 SSH 连接到节点 B 上的客户虚拟机并发出命令who
,它会正确报告我已从我的家庭康卡斯特 IP 地址登录。
但是,如果我连接到节点 A 上的客户虚拟机并发出命令who
,它会显示我已登录,但不是从我的 Comcast IP 登录,而是从节点 A 的主 IP 地址登录。
这很成问题,因为客户虚拟机错误地记录了登录来自何处,而且我们还进行了暴力破解检测。连续五次登录失败,您就会被禁止。由于现在所有登录似乎都来自节点 A 的主 IP 地址,因此节点 A 被防火墙阻止,虚拟机会脱机。
有人知道为什么会发生这种情况吗?
route -n
节点 A 的输出:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 204.XX.60.65 0.0.0.0 UG 0 0 0 em1
10.0.0.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
169.254.0.0 0.0.0.0 255.255.0.0 U 1004 0 0 em1
204.XX.60.0 0.0.0.0 255.255.255.0 U 0 0 0 em1
节点 A 的 /etc/openvpn/server.conf 内容:
port 1194
proto tcp-server
dev tun0
# 10.0.0.1 is server-vpn
# 10.0.0.2 is backup-vpn
ifconfig 10.0.0.1 10.0.0.2
# Our pre-shared static key
secret static.key
# LZO compression
comp-lzo
tun-mtu 64800
mssfix 1440
# 3 -- medium output, good for normal operation.
verb 3
答案1
解决了这个问题,iptables 中有一个错误的 POSTROUTING MASQUERADE 规则,与 OpenVPN 安装无关。
我删除了以下规则:
iptables -t nat -D POSTROUTING 1
1
规则编号是从哪里检索到的service iptables status
。