Networking
在 Xen 節點上執行 OpenVPN 會導致來賓 VM 將所有入站連接視為源自節點 IP
我有兩台執行 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
。