Networking

在 Xen 節點上執行 OpenVPN 會導致來賓 VM 將所有入站連接視為源自節點 IP

  • April 28, 2015

我有兩台執行 Xen 4.2 的節點伺服器——我將它們稱為節點 A 和節點 B。

節點 A 執行 OpenVPN 作為伺服器。節點 B 作為客戶端執行 OpenVPN。兩個節點都託管許多 Xen 來賓 VM。節點 A 和節點 B 通過 OpenVPN 連接在一起,節點 A 為 10.0.0.1,節點 B 為 10.0.0.2。

這是問題開始的地方:

如果我通過 SSH 連接到節點 B 上的來賓 VM 並發出who命令,它會正確報告我是從我的家庭 Comcast IP 地址登錄的。

但是,如果我連接到節點 A 上的來賓 VM 並發出who命令,它表示我已登錄,但不是來自我的 Comcast IP,而是來自節點 A 的主 IP 地址。

這是有問題的,不僅因為來賓虛擬機錯誤地記錄了登錄的來源,而且我們還進行了蠻力檢測。連續五次登錄失敗,您將被禁止。由於現在所有登錄似乎都來自節點 A 的主 IP 地址,因此節點 A 被防火牆阻止並且 VM 離線。

有誰知道為什麼會這樣?

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

解決了這個問題,在與 OpenVPN 安裝無關的 iptables 中有一個錯誤的 POSTROUTING MASQUERADE 規則。

我刪除了規則:

iptables -t nat -D POSTROUTING 1

1從中檢索的規則編號在哪裡service iptables status

引用自:https://serverfault.com/questions/686225