Iptables

是否可以使用 iptables 將公共 IP 轉換為私有 IP?

  • July 4, 2017

我在雲中有一堆主機,有私有和公共 IP。到目前為止,我可以以任何我想要的方式公開訪問所有主機。現在,我想從外部禁用對所有這些主機的某些訪問並設置 VPN。

我已經創建了一個 VPN 伺服器,一切正常——我可以很容易地看到我的內部網路。我現在面臨一個問題。所有主機都通過公共 DNS 訪問,並且此 DNS 具有所有主機的公共 IP。

我想要一種將所有公共 IP 轉換為私有 IP 的方法。例如,假設我有 2 個具有以下 IP 的主機:

Host 1:
Private IP: 10.1.0.5
Public IP: 1.2.3.4

Host 2:
Private IP: 10.1.0.6
Public IP: 5.6.7.8

如果我訪問 5.6.7.8 (1.2.3.4),我希望伺服器將其轉換為 10.1.0.6 (10.1.0.5)。

可以通過iptables嗎?到目前為止,我已經嘗試了以下方法,但沒有任何改變:

iptables -t nat -A OUTPUT -d 5.6.7.8 -j DNAT --to-destination 10.1.0.6

使用 iptables 攔截流量並路由到 IP

iptables -t nat -I PREROUTING -d 5.6.7.8 -j DNAT --to-destination 10.1.0.6
iptables -t nat -I PREROUTING -d 1.2.3.4 -j DNAT --to-destination 10.1.0.5

iptables -t nat -I POSTROUTING -o eth1 -j MASQUERADE

在您的範例中,您試圖根據OUTPUT規則路由流量,但在路由決策中為時已晚。在此範例中,我假設您的出站介面是 eth1。如果您因配置錯誤或缺乏我們之間交換的資訊而將自己鎖定在外,請確保您擁有對此設備的控制台訪問權限。

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