1. 如查看 linux 某埠被映射到那個埠上
如果用iptables映射,請試用以下命令
iptables -t nat -L -n | grep 80
如果沒有結果,說明沒有用iptables映射80埠
2. linux下nat+埠映射語句是什麼啊
Linux下埠映射腳本
iptables -t nat -A PREROUTING -d 111.111.111.113 -p tcp
--dport 21 -j DNAT --to-destination 192.168.0.222:21
iptables -t nat -A POSTROUTING -d 192.168.0.222 -p tcp
--dport 21 -o eth1 -j SNAT --to 192.168.0.1
iptables -t nat -A PREROUTING -d 111.111.111.113 -p
tcp --dport 80
PREROUTING 位於nat表,匹配修改目的地址(DNAT)
POSTROUTING 位於nat表,匹配修改源地址(SNAT)
iptables -t nat -A PREROUTING -d 192.168.1.1 -p tcp --dport 23 -j DNAT --to 192.168.3.202:33
3. 是否有辦法看到實時的linux中nat 映射表
POSTROUTING時,-o從理論上說來,是有自必要保留的,否則會有一些你不希望NAT但實際卻被NAT的數據包在網間傳遞。比如NAT主機有重定向路由,或者NAT主機多出口的時候。 不通應該是你撥號後,ppp埠不是ppp0而是ppp1、ppp2……依次往下排了,ppp0已經成...
4. linux如何查看路由表
使用 route 命令可以查看 Linux 內核路由表。
Route命令是用於操作基於內核ip路由表,它專的主要作用是創建一個靜屬態路由讓指定一個主機或者一個網路通過一個網路介面,如eth0。當使用"add"或者"del"參數時,路由表被修改,如果沒有參數,則顯示路由表當前的內容。
設置內核路由表的命令格式是:
# route [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
(4)linux查看nat映射表擴展閱讀
route命令參數介紹:
-c顯示更多信息
-n不解析名字
-v顯示詳細的處理信息
-F顯示發送信息
-C顯示路由緩存
-f清除所有網關入口的路由表。
-p與add命令一起使用時使路由具有永久性。
5. linux/unix -shell值iptables基礎知識
原文參考:
iptables防火牆可以用於創建過濾判手(filter)與NAT規則。所有Linux發行版都能使用iptables,因此理解如何配置 iptables將會幫助你更有效地管理Linux防火牆。如果你是第一次接觸iptables,你會覺得它很復雜,但是一旦你理解iptables的工 作原理,你會發現其實它很簡單。
首先介紹iptables的結構:iptables -> Tables -> Chains -> Rules. 簡單地講,tables由chains組成,而chains又由rules組成。如下圖所示。 [圖片上傳失敗...(image-ba5408-1536195185275)]
圖: IPTables Table, Chain, and Rule Structure
一、iptables的表與鏈
iptables具有Filter, NAT, Mangle, Raw四種內建表啟沖塵:
1. Filter表
Filter表示iptables的默認表,因此如果你沒有自定義表,那麼就默認使用filter表,它具有以下三種內建鏈:
2. NAT表
NAT表有三種內建鏈:
3. Mangle表
Mangle表用於指定如何處理數據包。它能改變TCP頭中的QoS位。Mangle表具有5個內建鏈:
4. Raw表
Raw表用於處理異常,它具有2個內建鏈:
5.小結
下圖展示了iptables的三個內建表:
[圖片上傳失敗...(image-753d8c-1536195185272)]
圖: IPTables 內建表
二、IPTABLES 規則(Rules)
牢記以下三點式理解iptables規則的關鍵:
目標值(Target Values)
下面是你可以在target里指定的特殊值:
如果你執行iptables –list你將看到防火牆上的可用規則。下例說明當前系統沒有定義防火牆,你可以看悄禪到,它顯示了默認的filter表,以及表內默認的input鏈, forward鏈, output鏈。
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
查看mangle表:
查看NAT表:
查看RAW表:
!注意:如果不指定 -t 選項,就只會顯示默認的 filter 表。因此,以下兩種命令形式是一個意思:
(or)
以下例子表明在filter表的input鏈, forward鏈, output鏈中存在規則:
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 RH-Firewall-1-INPUT all — 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 RH-Firewall-1-INPUT all – 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
Chain RH-Firewall-1-INPUT (2 references)
num target prot opt source destination
1 ACCEPT all – 0.0.0.0/0 0.0.0.0/0
2 ACCEPT icmp – 0.0.0.0/0 0.0.0.0/0 icmp type 255
3 ACCEPT esp – 0.0.0.0/0 0.0.0.0/0
4 ACCEPT ah – 0.0.0.0/0 0.0.0.0/0
5 ACCEPT udp – 0.0.0.0/0 224.0.0.251 udp dpt:5353
6 ACCEPT udp – 0.0.0.0/0 0.0.0.0/0 udp dpt:631
7 ACCEPT tcp – 0.0.0.0/0 0.0.0.0/0 tcp dpt:631
8 ACCEPT all – 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
9 ACCEPT tcp – 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
10 REJECT all – 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
以上輸出包含下列欄位:
三、清空所有iptables規則
在配置iptables之前,你通常需要用iptables –list命令或者iptables-save命令查看有無現存規則,因為有時需要刪除現有的iptables規則:
iptables –flush
或者
iptables -F
這兩條命令是等效的。但是並非執行後就萬事大吉了。你仍然需要檢查規則是不是真的清空了,因為有的linux發行版上這個命令不會清除NAT表中的規則,此時只能手動清除:
iptables -t NAT -F
四、永久生效
當你刪除、添加規則後,這些更改並不能永久生效,這些規則很有可能在系統重啟後恢復原樣。為了讓配置永久生效,根據平台的不同,具體操作也不同。下面進行簡單介紹:
1.Ubuntu
首先,保存現有的規則:
iptables-save > /etc/iptables.rules
然後新建一個bash腳本,並保存到 /etc/network/if-pre-up.d/ 目錄下:
iptables-restore < /etc/iptables.rules
這樣,每次系統重啟後iptables規則都會被自動載入。
!注意:不要嘗試在.bashrc或者.profile中執行以上命令,因為用戶通常不是root,而且這只能在登錄時載入iptables規則。
2.CentOS, RedHat
service iptables save
service iptables stop
service iptables start
查看當前規則:
cat /etc/sysconfig/iptables
五、追加iptables規則
可以使用iptables -A命令追加新規則,其中 -A 表示 Append 。因此, 新的規則將追加到鏈尾。
一般而言,最後一條規則用於丟棄(DROP)所有數據包。如果你已經有這樣的規則了,並且使用 -A 參數添加新規則,那麼就是無用功。
1.語法
iptables -A chain firewall-rule
2.描述規則的基本參數
以下這些規則參數用於描述數據包的協議、源地址、目的地址、允許經過的網路介面,以及如何處理這些數據包。這些描述是對規則的基本描述。
-p 協議(protocol)
-s 源地址(source)
-d 目的地址(destination)
-j 執行目標(jump to target)
-i 輸入介面(input interface)
-o 輸出(out interface)
3.描述規則的擴展參數
對規則有了一個基本描述之後,有時候我們還希望指定埠、TCP標志、ICMP類型等內容。
–sport 源埠(source port)針對 -p tcp 或者 -p udp
–-dport 目的埠(destination port)針對-p tcp 或者 -p udp
-–tcp-flags TCP標志 針對-p tcp
-–icmp-type ICMP類型 針對-p icmp
4.追加規則的完整實例:僅允許SSH服務
本例實現的規則將僅允許SSH數據包通過本地計算機,其他一切連接(包括ping)都將被拒絕。
iptables -F
iptables -A INPUT -i eth0 -p tcp –dport 22 -j ACCEPT
iptables -A INPUT -j DROP
六、更改默認策略
上例的例子僅對接收的數據包過濾,而對於要發送出去的數據包卻沒有任何限制。本節主要介紹如何更改鏈策略,以改變鏈的行為。
1. 默認鏈策略
/!警告 :請勿在遠程連接的伺服器、虛擬機上測試!
當我們使用-L選項驗證當前規則是發現,所有的鏈旁邊都有 policy ACCEPT 標注,這表明當前鏈的默認策略為ACCEPT:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp – anywhere anywhere tcp dpt:ssh
DROP all – anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
這種情況下,如果沒有明確添加DROP規則,那麼默認情況下將採用ACCEPT策略進行過濾。除非:
a)為以上三個鏈單獨添加DROP規則:
iptables -A INPUT -j DROP
iptables -A OUTPUT -j DROP
iptables -A FORWARD -j DROP
b)更改默認策略:
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
糟糕!!如果你嚴格按照上一節的例子配置了iptables,並且現在使用的是SSH進行連接的,那麼會話恐怕已經被迫終止了!
為什麼呢?因為我們已經把OUTPUT鏈策略更改為DROP了。此時雖然伺服器能接收數據,但是無法發送數據:
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp – anywhere anywhere tcp dpt:ssh
DROP all – anywhere anywhere
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy DROP)
target prot opt source destination
七、配置應用程序規則
盡管5.4節已經介紹了如何初步限制除SSH以外的其他連接,但是那是在鏈默認策略為ACCEPT的情況下實現的,並且沒有對輸出數據包進行限 制。本節在上一節基礎上,以SSH和HTTP所使用的埠為例,教大家如何在默認鏈策略為DROP的情況下,進行防火牆設置。在這里,我們將引進一種新的 參數-m state,並檢查數據包的狀態欄位。
1.SSH
iptables -A INPUT -i eth0 -p tcp –dport 22 -m state –state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp –sport 22 -m state –state ESTABLISHED -j ACCEPT
如果伺服器也需要使用SSH連接其他遠程主機,則還需要增加以下配置:
iptables -A OUTPUT -o eth0 -p tcp –dport 22 -m state –state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp –sport 22 -m state –state ESTABLISHED -j ACCEPT
2.HTTP
HTTP的配置與SSH類似:
iptables -A INPUT -i eth0 -p tcp –dport 80 -m state –state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp –sport 80 -m state –state ESTABLISHED -j ACCEPT
3.完整的配置
iptables -F
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
iptables -A INPUT -i eth0 -p tcp –dport 22 -m state –state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp –sport 22 -m state –state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp –dport 22 -m state –state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp –sport 22 -m state –state ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp –dport 80 -m state –state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp –sport 80 -m state –state ESTABLISHED -j ACCEPT
References
[1] Linux Firewall Tutorial: IPTables Tables, Chains, Rules Fundamentals
[2] IPTables Flush: Delete / Remove All Rules On RedHat and CentOS Linux
[3] Linux IPTables: How to Add Firewall Rules (With Allow SSH Example)
[4] Linux IPTables: Incoming and Outgoing Rule Examples (SSH and HTTP)
[5] 25 Most Frequently Used Linux IPTables Rules Examples
[6] man 8 iptables
6. linux中iptables防火牆怎麼設置
一,安裝並啟動防火牆
[root@linux ~]# /etc/init.d/iptables start
當我們用iptables添加規則,保存後,這些規則以文件的形勢存在磁碟上的,以CentOS為例,文件地址是/etc/sysconfig/iptables,我們可以通過命令的方式去添加,修改,刪除規則,也可以直接修改/etc/sysconfig/iptables這個文件就行了。
1.載入模塊
/sbin/modprobe ip_tables
2.查看規則
iptables -L -n -v
3.設置規則
#清除已經存在的規則
iptables -F
iptables -X
iptables -Z
#默認拒絕策略(盡量不要這樣設置,雖然這樣配置安全性高,但同時會拒絕包括lo環路在內的所#有網路介面,導致出現其他問題。建議只在外網介面上做相應的配置)
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#ssh 規則
iptables -t filter -A INPUT -i eth0 -p tcp –dport 22 -j ACCEPT
iptables -t filter -A OUTPUT -o eth0 -p tcp –sport 22 -j ACCEPT
#本地還回及tcp握手處理
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
#www-dns 規則
iptables -I INPUT -p tcp –sport 53 -j ACCEPT
iptables -I INPUT -p udp –sport 53 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p tcp –dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -o eth0 -p tcp –sport 80 -j ACCEPT
#ICMP 規則
iptables -A INPUT -p icmp –icmp-type echo-request-j ACCEPT
iptables -A INPUT -p icmp –icmp-type echo-reply -j ACCEPT
iptables -A OUTPUT -p icmp –icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp –icmp-type echo-reply -j ACCEPT
二,添加防火牆規則
1,添加filter表
1.[root@linux ~]# iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT //開放21埠
出口我都是開放的iptables -P OUTPUT ACCEPT,所以出口就沒必要在去開放埠了。
2,添加nat表
1.[root@linux ~]# iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j MASQUERADE
將源地址是 192.168.10.0/24 的數據包進行地址偽裝
3,-A默認是插入到尾部的,可以-I來插入到指定位置
1.[root@linux ~]# iptables -I INPUT 3 -p tcp -m tcp --dport 20 -j ACCEPT
2.[root@linux ~]# iptables -L -n --line-number
3.Chain INPUT (policy DROP)
4.num target prot opt source destination
5.1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
6.2 DROP icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 8
7.3 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:20 //-I指定位置插的
8.4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
9.5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
10.6 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
11.7 DROP all -- 0.0.0.0/0 0.0.0.0/0 state INVALID,NEW
12.8 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 //-A默認插到最後
13.Chain FORWARD (policy ACCEPT)
14.num target prot opt source destination
15.Chain OUTPUT (policy ACCEPT)
16.num target prot opt source destination
三,查下iptable規則
1,查看filter表
1.[root@linux ~]# iptables -L -n --line-number |grep 21 //--line-number可以顯示規則序號,在刪除的時候比較方便
2.5 ACCEPT tcp -- 192.168.1.0/24 0.0.0.0/0 tcp dpt:21
如果不加-t的話,默認就是filter表,查看,添加,刪除都是的
2,查看nat表
1.[root@linux ~]# iptables -t nat -vnL POSTROUTING --line-number
2.Chain POSTROUTING (policy ACCEPT 38 packets, 2297 bytes)
3.num pkts bytes target prot opt in out source destination
4.1 0 0 MASQUERADE all -- * * 192.168.10.0/24 0.0.0.0/0
四,修改規則
1.[root@linux ~]# iptables -R INPUT 3 -j DROP //將規則3改成DROP
五,刪除iptables規則
1.[root@linux ~]# iptables -D INPUT 3 //刪除input的第3條規則
2.[root@linux ~]# iptables -t nat -D POSTROUTING 1 //刪除nat表中postrouting的第一條規則
3.[root@linux ~]# iptables -F INPUT //清空 filter表INPUT所有規則
4.[root@linux ~]# iptables -F //清空所有規則
5.[root@linux ~]# iptables -t nat -F POSTROUTING //清空nat表POSTROUTING所有規則
六,設置默認規則
1.[root@linux ~]# iptables -P INPUT DROP //設置filter表INPUT默認規則是 DROP
所有添加,刪除,修改後都要保存起來,/etc/init.d/iptables save.上面只是一些最基本的操作,要想靈活運用,還要一定時間的實際操作。
iptables配置常規映射及軟路由
作用:虛擬化雲平台伺服器網段192.168.1.0/24 通過一台linux伺服器(eth0:192.168.1.1、eth1:10.0.0.5)做軟路由達到訪問10.0.0.5能訪問的網路范圍,並且通過iptables的NAT映射提供服務。
NAT 映射網路埠:
效果: 10.0.0.5:2222 —-》 192.168.1.2:22
命令:iptable -t nat -A PREROUTING -D 10.0.0.5 -p tcp –dport 2222 -j DNAT –to-destination 192.168.1.2:22
service iptables save
service iptables restart
注意:1.在192.168.1.2的網路配置上需要將NAT主機的內網ip即192.168.1.1作為默認網關,如果10.0.0.5具有公網訪問許可權,dns則設置成公網對應dns
2. echo 1 》 /proc/sys/net/ip_forward 在NAT 主機上需要開啟轉發才能生效
軟路由192.168.1.0/24通過10.0.0.5訪問外網:
命令:iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT –to-source 10.0.0.5
service iptables save
service iptables restart