Linux

將來自埠 25565 的傳入數據包轉發到 nat 內部客戶端?IPTables

  • November 4, 2014

我最近一直在學習使用 iptables,並在 virtualbox 中創建了一個小型 nat 網路。我有一個用於內部客戶端的 Debian 伺服器 Natting。其中一個內部客戶端正在託管我的世界伺服器進行測試。

我想要做的是使用埠 25565 從 debian 伺服器進入 eth0 的任何傳入連接,將它們專門轉發到 eth1 的內部 minecraft 伺服器(192.168.200.4)。就像您在普通的 Linksys 路由器中一樣。

我想出但實際上不起作用的是:

iptables -A FORWARD -i eth0 --dport 25565 -o eth1 -d 192.168.200.4 -j ACCEPT

然後我讀到了錯誤和其他 tuts,它實際上是我需要使用的 POSTROUTING/PREROUTING。所以我嘗試了:

iptables -t nat -A POSTROUTING -i eth0 -p tcp --dport 25565 -o eth1 -d 192.168.200.4 -j ACCEPT

現在顯然這些都不起作用,但我想知道我是否在正確的軌道上?

這是虛擬網路的圖表,因此您可以直覺地看到它:

http://i.imgur.com/nj7pmK8.jpg

目前,iptables 配置如下所示:

Chain INPUT (policy ACCEPT)
target      prot  opt  source                    destination
ACCEPT      all   --   anywhere                  anywhere                 
ACCEPT      all   --   anywhere                  anywhere                 state RELATED,ESTABLISHED
ACCEPT      all   --   anywhere                  anywhere                 tcp dpt:telnet

Chain FORWARD (policy ACCEPT)
target      prot  opt  source                    destination
ACCEPT      all   --   anywhere                  anywhere                 state RELATED,ESTABLISHED
ACCEPT      all   --   anywhere                  anywhere

Chain OUTPUT (policy ACCEPT)
target      prot  opt  source                    destination

將很高興添加任何其他詳細資訊:)

(INPUT 鏈中的任何東西都只是我之前弄亂的其他規則,最初,它擁有的唯一規則是 FORWARD 鏈下的規則)

這是我為 NAT 遵循的教程: http ://www.revsys.com/writings/quicktips/nat.html

在您的方案中,您的外部 IP 不正確:192.168.1.161是內部 IP。

你有一個真正的外部(公共)IP:案例如http://www.whatismyip.com檢查它(希望它是一個固定的)。

首先,您需要使用該PREROUTING鏈將您的 External IP DNAT 到您的 Internal IP :

iptables -t nat -A PREROUTING -p tcp -d $PUBLIC_IP --destination-port 25565 -j DNAT --to 192.168.200.4:25565

然後,您需要允許從源到目標的介面之間的數據包轉發:

iptables -A FORWARD -p tcp -i eth0 -o eth1 -d 192.168.200.4 --destination-port 25565 -m state --state NEW -j ACCEPT

但是,請向 Google 查詢如何為 Web 伺服器執行此操作,您會發現很多資源(也在此站點上)。邏輯保持不變。

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