q:一區域網192.168.1.0/24,有web和ftp伺服器192.168.1.10、192.168.1.11,閘道器linux,內網eth0,ip為192.168.1.1,外網eth1,ip為a.b.c.d,怎樣作nat能使內外網都能訪問公司的伺服器?
a:# web
# 用dnat作埠對映
iptables -t nat -a prerouting -d a.b.c.d -p tcp --dport 80 -j dnat --to 192.168.1.10
# 用snat作源位址轉換(關鍵),以使回應包能正確返回
iptables -t nat -a postrouting -d 192.168.1.10 -p tcp --dport 80 -j snat --to 192.168.1.1
# 一些人經常忘了開啟forward鏈的相關埠,特此增加
iptables -a forward -o eth0 -d 192.168.1.10 -p tcp --dport 80 -j accept
iptables -a forward -i eth0 -s 192.168.1.10 -p tcp --sport 80 -m --state established -j accept
# ftp
modprobe ip_nat_ftp ###載入ip_nat_ftp模組(若沒有編譯進核心),以使ftp能被正確nat
modprobe ip_conntrack_ftp ###載入ip_conntrack_ftp模組
# 用dnat作埠對映
iptables -t nat -a prerouting -d a.b.c.d -p tcp --dport 21 -j dnat --to 192.168.1.11
iptables -a forward -o eth0 -d 192.168.1.11 -p tcp --dport 21 -j accept
iptables -a forward -i eth0 -s 192.168.1.11 -p tcp --sport 21 -m --state established -j accept
iptables -a forward -i eth0 -s 192.168.1.11 -p tcp --sport 20 -m --state established,related -j accept
iptables -a forward -o eth0 -d 192.168.1.11 -p tcp --dport 20 -m --state established -j accept
iptables -a forward -o eth0 -d 192.168.1.11 -p tcp --dport 1024: -m --state established,related -j accept
iptables -a forward -i eth0 -s 192.168.1.11 -p tcp --sport 1024: -m --state established -j accept
# 用snat作源位址轉換(關鍵),以使回應包能正確返回
iptables -t nat -a postrouting -d 192.168.1.11 -p tcp --dport 21 -i eth0 -j snat --to 192.168.1.1
iptables -t nat -a prerouting -s 192.168.1.0/24 -p tcp --dport 80 -i eth0 -j redirect --to 3128
iptables -t nat -a prerouting -d a.b.c.d -p tcp --dport 80 -j dnat --to 192.168.1.10
iptables -t nat -a postrouting -d 192.168.1.10 -p tcp --dport 80 -j snat --to 192.168.1.1
a:問題主要在prerouting鏈中redirect和dnat的順序,由於先進行了redirect(重定向),則到第二句dnat時,埠已變為3128,不匹配第二句的目的埠80,dnat也就不會執行,不能到達正確的目的地。解決的辦法有兩個:
1、把redirect語句放到dnat語句的後面,如下:
iptables -t nat -a prerouting -d a.b.c.d -p tcp --dport 80 -j dnat --to 192.168.1.10
iptables -t nat -a prerouting -s 192.168.1.0/24 -p tcp --dport 80 -i eth0 -j redirect --to 3128
iptables -t nat -a prerouting -s 192.168.1.0/24 -d ! a.b.c.d -p tcp --dport 80 -i eth0 -j redirect --to 3128
iptables 埠對映設定
首先應該做的是 etc sysctl.conf配置檔案的 net.ipv4.ip forward 1 預設是0 臨時生效 echo 1 proc sys net ipv4 ip forward 設我們有一台計算機,有兩塊網絡卡,eth0連外網,ip為1.2.3.4 eth1連內網,ip為192.16...
linux iptables埠對映設定
iptables 埠對映設定如下 設我們有一台計算機,有兩塊網絡卡,eth0連外網,ip為1.2.3.4 eth1連內網,ip為192.168.0.1.現在需要把發往位址1.2.3.4的81埠的ip包 到ip位址192.168.0.2的8180埠,設定如下 1.iptables t nat a pr...
埠對映 配置ssh埠對映
此手段用於在單向連通網路中進行雙向網路打穿 適用於未配埠對映的docker容器,不能反向訪問的受限網路等 在封閉網路內伺服器 容器執行以下命令,結果可以使目標伺服器通過訪問封閉網路內伺服器 容器的 ssh fgn r localhost root p 在目標伺服器執行以下命令,結果可以使目標伺服器通...