Iptables Nat轉發
Iptables Nat
iptables子命令:
規則:
-A:添加
-I:插入
-D:刪除
-R:修改
鏈:
-N:新建一條自定義的鏈
-X:刪除一條自定義的空鏈
-F:清空鏈中的規則
-Z:清空鏈中的計數器
-E:重命名自定連的名稱
-P:修改鏈的默認規則
顯示:
-L:
-n,-v,--line-numbers
-S:
規則定義:iptables -t table -A|-I|-R chain 匹配條件 -j target
匹配條件:
通用匹配:-s,-d,-i,-o,-p
擴展匹配:
隱含擴展
-p tcp
--sport --dport --tcp-flags
--syn
-p udp
--sport --dport
-p icmp
--icmp-type
echo-request:8
echo-reply:0
顯示擴展
-m state
--state
-m multiport
--sports,--dports,--ports
-m iprange
--src-range,--dst-range
-m string
--algo {bm|kmp},--string,--hex-string
-m connlimit
--connlimit-above
-m limit
--limit n(/second|minute|hour|day),--limit-burst
-m time
--datestart,--datestop
--timestart,--timestart
--weekdays
-j
ACCEPT DROP REJECT LOG REDIRCT SNAT DNAT MASQUERADE MARK RETURN 自定義鏈
四表:raw mangle nat filter
五鏈:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
主機防火墻:INPUT,OUTPUT
網絡防火墻:
路由:對於Linux主機來說,設定/proc/sys/net/ipv4/ip_forward的值為1,即為開啟了路由功能.
路由表的生成:
靜態:手動添加
動態:基於路由協議學習,RIP2,OSPF
NAT:網絡地址轉換
A:10
B:172.16-172.31
C:192.168.0-192.168.255
NAT:工作在網絡層和傳輸層
Proxy:工作在應用層
iptables -P FORWARD DROP
網關必須和本地ip在同一局域網內
一個請求進來首先交給本機,本機未匹配到再交給網關.
172.16.0.177---{172.16.0.192|192.168.30.11}-----192.168.30.129
# iptables -A FORWARD -d 192.168.30.129 -m state --state ESTABLISHED -j ACCEPT
# iptables -A FORWARD -d 192.168.30.129 -p tcp -m multiport --dports 22,80 -m state --state NEW -j ACCEPT
NAT:
Basic Nat:靜態NAT.
NAPT:動態NAT,網絡地址端口轉換.
源地址轉換:SNAT,用於讓內網主機訪問互聯網.
目標地址轉換:DNAT,讓互聯網上的主機訪問本地內網中的某服務器上的服務.
Iptables 基於SNAT和DNAT這兩個目標實現地址轉換技術.
-j SNAT --to-source
添加到post鏈.
# iptables -t nat -nL
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
PREROUTING:主要做DNAT
POSTROUTING OUTPUT 主要做SNAT
#SNAT實例;
所有來自172.16.0.0/24的ip全部做SNAT,轉換為 192.168.30.129
# iptables -t nat -A POSTROUTING -s 172.16.0.0/24 -j SNAT --to-source 192.168.30.129
-j:MASQUERADE 地址偽裝
-j:DNAT --to-destination DIP[:PORT]
支持端口映射
# iptables -t nat -A PREROUTING -d 172.16.0.192 -p tcp --dport 80 -j DNAT --to-destination 192.168.30.129
訪問本地扯淡2222端口,做DNAT跳到192.168.30.129的22端口.
# iptables -t nat -A PREROUTING -d 172.16.0.192 -p tcp --dport 2222 -j DNAT --to-destination 192.168.30.129:22
UDP多端口轉發:
有兩種寫法,多端口的匹配可以使用":"匹配範圍,也可以使用"-"匹配範圍.
第一種:
#-A PREROUTING -d 192.168.30.129 -p udp --dport 41861:41868 -j DNAT --to-destination 172.16.10.192:41861-41868
#-A POSTROUTING -s 172.16.10.192 -p udp --dport 41861:41868 -j SNAT --to-source 192.168.30.131
匹配端口範圍,但是nat轉發時會端口錯亂,有時轉發可能並未達到想要的結果.
第二種:
一個端口一條的匹配.
本文出自 “螞蟻” 博客,請務必保留此出處http://215687833.blog.51cto.com/6724358/1954138
Iptables Nat轉發