僅允許特定公共 IP 的傳入流量

僅允許特定公共 IP 的傳入流量

我有一個 Debian VPS,有 2 個公用 IP 位址:90.90.90.90 和 90.90.90.100。

我想做的是讓伺服器只接受其他公用 IP 的傳入流量。

例子:

我的伺服器上運行著一個 OpenVPN 伺服器。當我建立到 90.90.90.90 的 VPN 連線時,公用 IP 將為 90.90.90.100。 (這是目前的情況)

我不希望 OpenVPN 連接埠對 90.90.90.100 打開,而只對我連接到伺服器時使用的其他 IP 開放。

使用 iptables 或其他方法可以實現這一點嗎?

謝謝!

答案1

如果我明白您的意圖,您希望與 IP #1 建立的 VPN 連線將其傳出連線偽裝為 IP #2,並希望與 IP #2 建立的 VPN 連線將其傳出連線偽裝為 IP #1。

為了得到這個答案,我們將呼叫 90.90.90.90 IP #1 和 90.90.90.100 IP #2

最簡單的方法是執行 2 個 openvpn 伺服器。為每個子網路設定不同的私有子網路範圍,例如,IP #1 上的傳入連線將接收10.0.1.0/24 範圍內的位址,IP #2 上的傳入連線將接收10.0.2.0/24 範圍內的地址。

除了三行之外,設定檔大部分與原始配置相同,第一個配置將具有以下內容:

local 90.90.90.90
server 10.0.1.0 255.255.255.0
push "route 10.0.1.0 255.255.255.0"

而第二個將有這個:

local 90.90.90.100
server 10.0.2.0 255.255.255.0
push "route 10.0.2.0 255.255.255.0"

重新啟動 openvpn 服務以確保兩個設定檔都已啟動。

然後,為了確保連線在離開 VPN 伺服器時獲得正確的外部 IP 位址,您可以使用下列 iptables 規則。將 eth0 替換為實際的介面名稱。

iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -o eth0 -j SNAT --to 90.90.90.100
iptables -t nat -A POSTROUTING -s 10.0.2.0/24 -o eth0 -j SNAT --to 90.90.90.90

現在,VPN 連接從一個 IP 進入,然後假裝另一個 IP 出去。這可能比需要的更複雜,特別是沒有理由運行VPN 伺服器,在這種情況下,只需刪除其中一個配置並專門使用剩餘的配置。

相關內容