1. 程式人生 > >Iptables Nat轉發

Iptables Nat轉發

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轉發