Iptables

VPN 路由到本地網路中公共 IP 的 NAT 規則

  • February 21, 2019

我正在嘗試配置測試 VPN 設置以將 ping 路由到實例公共 IP。我們正在連接的一家公司供應商已將所有私人空間保留在他們身邊。我不確定我需要什麼 NAT 規則來從我們這邊的 VPN 路由器實例獲取流量,以根據其公共地址而不是私有地址將流量轉發到其後面的對應實例。

我有類似的拓撲

A-Server <-> A-VPN <–internet–> B-VPN <-> B-Server。

VPN 隧道已建立,我可以毫無問題地通過私有 IP ping 任一端。ping 公共 IP 確實到達了“另一端”的 VPN 機器,但停在那裡(我認為由“$ ip xfrm monitor”中的活動指示?)。

兩個 VPN 實例在其左側/右側允許的子網中都有 A-Server 公共 IP/32,如果合適的話。

在 A-VPN 實例上遵循 NAT 規則似乎不起作用,我不確定我是否在濫用它們或如何進一步調試。

iptables -t nat -A POSTROUTING -s &lt;A-Server PRIVATE IP&gt;/32 -d &lt;B-Server PRIVATE IP&gt;/32 -j SNAT --to-source &lt;A-Server PUBLIC IP&gt;
iptables -t nat -A PREROUTING -s &lt;B-Server PRIVATE IP&gt;/32 -d &lt;A-Server PUBLIC IP&gt;/32 -j DNAT --to-destination &lt;A-Server PRIVATE IP&gt;

A-VPN 的現行規則:

# iptables-save
# Generated by iptables-save v1.4.21 on Fri Feb 15 11:12:15 2019
*nat
:PREROUTING ACCEPT [2:168]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [21:1848]
:POSTROUTING ACCEPT [23:2016]
-A PREROUTING -s 172.31.24.75/32 -d &lt;A-Server PUBLIC IP&gt;/32 -j DNAT --to-destination 10.0.10.15
-A POSTROUTING -s 10.0.0.34/32 -d 172.31.24.75/32 -j SNAT --to-source &lt;A-Server PUBLIC IP&gt;
COMMIT
# Completed on Fri Feb 15 11:12:15 2019
# Generated by iptables-save v1.4.21 on Fri Feb 15 11:12:15 2019
*filter
:INPUT ACCEPT [104381:64450743]
:FORWARD ACCEPT [189:13956]
:OUTPUT ACCEPT [89586:3506732]
COMMIT
# Completed on Fri Feb 15 11:12:15 2019

經過一些閱讀和支持,我設法解決了這個問題。

採取的步驟:

‘左邊:

  • 創建了一個新的 ElasticIP 而不將其分配給實例。

  • 添加&lt;unallocated EIP&gt;到 A-VPN .conf 文件的左子網。

  • 將這些 iptables 規則添加到 A-VPN:

    • iptables -t nat -A PREROUTING -d &lt;unallocated EIP&gt;-j DNAT –to-destination&lt;A-Server PRIVATE IP&gt;
    • iptables -t nat -A POSTROUTING -d &lt;B-Server PRIVATE IP&gt;-j SNAT –to-source&lt;unallocated EIP&gt;

‘右邊:

  • 添加&lt;unallocated EIP&gt;到 B-VPN .conf 文件的右子網。
  • 添加了 VPC 子網路由表規則,以將具有目的地的流量指向&lt;unallocated EIP&gt;通過 B-VPN 的流量。

兩台VPN機器:

  • 重新啟動 ipsec。

此時所有機器上的 tcpdump 在通過公共 IP 從 B-Server ping 到 A-Server 時在所有機器上顯示正確的路由和 ip rewriting&lt;unallocated EIP&gt;

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