日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux iptables用法与NAT

發布時間:2024/1/23 linux 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux iptables用法与NAT 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.相關概念

2.iptables相關用法

3.NAT(DNAT與SNAT)

相關概念

防火墻除了軟件及硬件的分類,也可對數據封包的取得方式來分類,可分為代理服務器(Proxy)及封包過濾機制(IP Filter)。

代理服務是一種網絡服務,通常就架設在路由上面,可完整的掌控局域網的對外連接。

IP Filter這種方式可以直接分析最底層的封包表頭數據來進行過濾,所以包括 MAC地址, IP, TCP, UDP, ICMP 等封包的信息都可以進行過濾分析的功能,用途非常廣泛。

其實Iptables服務不是真正的防火墻,只是用來定義防火墻規則功能的"防火墻管理工具",將定義好的規則交由內核中的netfilter即網絡過濾器來讀取,從而真正實現防火墻功能。

?

iptables抵擋封包的方式:

拒絕讓 Internet 的封包進入 Linux 主機的某些 port

拒絕讓某些來源 IP 的封包進入

拒絕讓帶有某些特殊標志( flag )的封包進入

分析硬件地址(MAC)來提供服務

?

iptables命令中設置數據過濾或處理數據包的策略叫做規則,將多個規則合成一個鏈,叫規則鏈。
規則鏈則依據處理數據包的位置不同分類:

PREROUTING:?在進行路由判斷之前所要進行的規則(DNAT/REDIRECT)
INPUT:處理入站的數據包
OUTPUT:處理出站的數據包
FORWARD:處理轉發的數據包
POSTROUTING:?在進行路由判斷之后所要進行的規則(SNAT/MASQUERADE)

?

?

iptables中的規則表是用于容納規則鏈,規則表默認是允許狀態的,那么規則鏈就是設置被禁止的規則,而反之如果規則表是禁止狀態的,那么規則鏈就是設置被允許的規則。

raw表:確定是否對該數據包進行狀態跟蹤

mangle表:為數據包設置標記(較少使用)

nat表:修改數據包中的源、目標IP地址或端口

filter表:確定是否放行該數據包(過濾)

規則表的先后順序:raw→mangle→nat→filter

?

規則鏈的先后順序:

入站順序:PREROUTING→INPUT

出站順序:OUTPUT→POSTROUTING

轉發順序:PREROUTING→FORWARD→POSTROUTING

?

內建表與鏈的關系流程圖(去掉了mangle表):

????

另外注意:

1.沒有指定規則表則默認指filter表。

2.不指定規則鏈則指表內所有的規則鏈。

3.在規則鏈中匹配規則時會依次檢查,匹配即停止(LOG規則例外),若沒匹配項則按鏈的默認狀態處理。

?

?

?

iptables命令中則常見的控制類型有:

ACCEPT:允許通過.
LOG:記錄日志信息,然后傳給下一條規則繼續匹配.
REJECT:拒絕通過,必要時會給出提示.
DROP:直接丟棄,不給出任何回應.

?

iptables命令基本參數和用法

????格式為:"iptables [-t 表名] 選項 [鏈名] [條件] [-j 控制類型]"。

以下格式的寫法或許更為清楚明白:
"iptables –[A|I 鏈] [-i|o 網絡接口] [-p 協議] [-s 來源ip/網域] [-d 目標ip/網域] –j[ACCEPT|DROP]"

下表格為幾乎所有常用的iptables參數,

參數

作用

-P

設置默認策略:iptables -P INPUT (DROP|ACCEPT)

-F

清空規則鏈

-L

查看規則鏈

-A

在規則鏈的末尾加入新規則

-I num

在規則鏈的頭部加入新規則

-D num

刪除某一條規則

-s

匹配來源地址IP/MASK,加嘆號"!"表示除這個IP外。

-d

匹配目標地址

-i 網卡名稱

匹配從這塊網卡流入的數據

-o 網卡名稱

匹配從這塊網卡流出的數據

-p

匹配協議,如tcp,udp,icmp

--dport num

匹配目標端口號

--sport num

匹配來源端口號

?

Iptables規則查看與清除

?

查看:

?

清除:

????規則的清除

?

策略(Policy)的清除

Iptables 開放網口與ip來源

例:所有的來自 lo 這個網口的封包,都予以接受

iptables –A INPUT –i lo –j ACCEPT

例:目標來自 192.168.1.200 這個 IP 的封包都予以接受

iptables –A INPUT –i eth0 –s 192.168.1.200 –j ACCEPT

例:192.168.1.0/24 可接受,但 192.168.1.10 丟棄

iptalbes –A INPUT –i eth0 –s 192.168.1.0/24 –j ACCEPT

iptables -A INPUT -i eth0 -s 192.168.1.10 -j DROP

?

Iptables 規則記錄

例:# iptables -A INPUT -s 192.168.1.200 -j LOG

相關信息就會被寫入到/var/log/messages當中,然后該封包會繼續進行

后續的規則比對。LOG 這個動作僅在進行記錄而已,并不會影響到這個封包的其它規則比對的。

?

Iptables 開放tcp、udp端口

例:開放samba端口(udp137,138;tcp139,445)

iptables –A INPUT –i eth0 –p udp –dport 137:138 –j ACCEPT

iptables –A INPUT –i eth0 –p tcp –dport 139–j ACCEPT

iptables –A INPUT –i eth0 –p tcp –dport 445–j ACCEPT

?

iptables匹配ICMP端口和ICMP類型

iptables –A INPUT –p icmp –icmp-type 類型 –j ACCEPT

參數:--icmp-type :后面必須要接 ICMP 的封包類型,也可以使用代號,

例如 8 代表 echo request 的意思。(可自查詢ICMP-type對應表)

?

Iptables –syn的處理方式

指定TCP匹配擴展

使用 –tcp-flags 選項可以根據tcp包的標志位進行過濾。

#iptables -A INPUT -p tcp –tcp-flags SYN,FIN,ACK SYN

#iptables -A FROWARD -p tcp –tcp-flags ALL SYN,ACK

上實例中第一個表示SYN、ACK、FIN的標志都檢查,但是只有SYN匹配。第二個表示ALL(SYN,ACK,FIN,RST,URG,PSH)的標志都檢查,但是只有設置了SYN和ACK的匹配。

#iptables -A FORWARD -p tcp --syn

選項—syn相當于"--tcp-flags SYN,RST,ACK SYN"的簡寫。

?

Iptables 狀態模塊

例:只要已建立或相關封包就予以通過,只要是不合法封包就丟棄

iptables –A INPUT –m state –state RELATED ESTABLISHED –j ACCEPT

iptables –A INPUT –m state –state INVALID –j DORP

例:對局域網內mac地址為00:0C:29:56:A6:A2主機開放其聯機

[root@linux ~]# iptables -A INPUT -m mac --mac-source 00:0C:29:56:A6:A2 -j ACCEPT

?

Iptables保存于恢復

iptables-save > /etc/sysconfig/iptables.20180606

iptables-restore < /etc/sysconfig/iptables.20180606

?

?

?

NAT(Network AddressTranslation網絡地址轉換)

首先說說局域網內封包的傳送,

1. 先經過 NAT table 的 PREROUTING 鏈;

2. 經由路由判斷確定這個封包是要進入本機與否,若不進入本機,則下一步;

3. 再經過 Filter table 的 FORWARD 鏈;

4. 通過 NAT table 的 POSTROUTING 鏈,最后傳送出去。

NAT 主機的重點就在于上面流程的第 1,4 步驟,也就是 NAT table 的兩條重要的鏈:PREROUTING 與POSTROUTING。 那這兩條鏈重要功能在于修改IP,而這兩條鏈修改的IP又是不一樣的,POSTROUTING在修改來源IP,PREROUTING則在修改目標IP 。由于修改的 IP 不一樣,所以就稱為來源NAT (Source NAT, SNAT) 及目標 NAT (Destination NAT, DNAT)。

?

SNAT即源地址轉換,能夠讓多個內網用戶通過一個外網地址上網,解決了IP資源匱乏的問題。一個無線路由器也就使用此技術。

SNAT封包傳送示意圖

由上圖可知,需要將192.168.10.10轉換為111.196.211.212,iptables命令如下:

iptables –t nat –A POSTROUTING –s 192.168.10.10 –o eth1 –j SNAT --to-source 111.196.221.212

外網IP地址不穩定的情況即可使用MASQUERADE(動態偽裝),能夠自動的尋找外網地址并改為當前正確的外網IP地址

iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j MASQUERADE

?

DNAT即目地地址轉換,則能夠讓外網用戶訪問局域網內不同的服務器。(相當于SNAT的反向代理)

DNAT封包傳送示意圖

?

由上圖可知,目標地址192.168.10.6在路由前就轉換成61.240.149.149,需在網關上運行iptables命令如下:

iptables –t nat –A PREROUTING –i eth1 –d 61.240.149.149 –p tcp –dport 80 –j DNAT --to-destination 192.168.10.6:80

eth1網口傳入,且想要使用 port 80 的服務時,將該封包重新傳導到 192.168.1.210:80 的 IP 及 port 上面,可以同時修改 IP 與 port。此為地址映射與端口轉換。

?

還可以使用REDIRECT單獨進行端口轉換

例:將 80 端口的封包轉遞到 8080端口

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080

# 使用 8080 這個 port 來啟動 WWW ,但是別人都以80來聯機

?

轉自:https://www.cnblogs.com/whych/p/9147900.html

總結

以上是生活随笔為你收集整理的Linux iptables用法与NAT的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。