導航:首頁 > 程序命令 > linuxiptable命令

linuxiptable命令

發布時間:2023-06-11 08:48:30

A. linux iptables設置

一、Linux下開啟/關閉防火牆命令
1、永久性生效,重啟後不會復原。
開啟: chkconfig iptables on
關閉: chkconfig iptables off
2、 即時生效,重啟後復原
開啟: service iptables start
關閉: service iptables stop
需要說明的是對於Linux下的其它服務都可以用以上命令執行開啟和關閉操作。
在當開啟了防火牆時,做如下設置,開啟相關埠,
修改/etc/sysconfig/iptables 文件,添加以下內容:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
二、UBuntu關閉防火牆
iptables -A INPUT -i ! PPP0 -j ACCEPT
三、CentOS Linux 防火牆配置及關閉
執行」setup」命令啟動文字模式配置實用程序,在」選擇一種工具」中選擇」防火牆配置」,然後選擇」運行工具」按鈕,出現防火牆配置界面,將」安全級別」設為」禁用」,然後選擇」確定」即可.
或者用命令:
#/sbin/iptables -I INPUT -p tcp –dport 80 -j ACCEPT
#/sbin/iptables -I INPUT -p tcp –dport 22 -j ACCEPT
#/etc/rc.d/init.d/iptables save
這樣重啟計算機後,防火牆默認已經開放了80和22埠
這里應該也可以不重啟計算機:
#/etc/init.d/iptables restart
關閉防火牆服務即可:
查看防火牆信息:
#/etc/init.d/iptables status
關閉防火牆服務:
#/etc/init.d/iptables stop

B. iptables命令詳解是什麼

iptables的主要功能是實現對網路數據包進出設備及轉發的控制。當數據包需要進入設備、從設備中流出或者經該設備轉發、路由時,都可以使用iptables進行控制。

iptables命令的語法規則:

iptables [-t table] COMMAND [chain] CRETIRIA -j ACTION;

-t table,是指操作的表,filter、nat、mangle或raw, 默認使用filter;

COMMAND,子命令,定義對規則的管理;

chain:指明鏈路;

CRETIRIA:匹配的條件或標准;

ACTION:操作動作;

命令說明

Iptables 是用來設置、維護和檢查Linux內核的IP包過濾規則的。

可以定義不同的表,每個表都包含幾個內部的鏈,也能包含用戶定義的鏈。每個鏈都是一個規則列表,對對應的包進行匹配:每條規則指定應當如何處理與之相匹配的包。這被稱作'target'(目標),也可以跳向同一個表內的用戶定義的鏈。

以上內容參考:網路-IPTABLES

C. IPTABLES 詳解

引言

先來看一條常用的iptables命令:

Iptables(-t filter) -I INPUT -p tcp  --dport ssh/22 -j ACCEPT

這一條命令,生成了一條規則。允許所有寬岩22埠的TCP連接。

這條規則作用表是filter表,即iptables默認表。作用鏈是INPUT鏈。

規則就是網路管理員預定義的條件,規則一般的定義為「如果數據包頭符合這樣的條件,就這樣處理這個數據包」。規則存儲在內核空間的信息包過濾表中,這些規則分別指定了源地址、目的地址、傳輸協議(如TCP、UDP、ICMP)和服務類型(如HTTP、FTP和SMTP)等。當數據包與規則匹配時,iptables就根據規則所定義的方法來處理這些數據包,如放行(accept)、拒絕(reject)和丟棄(drop)等。配置防火牆的主要工作就是添加、修改和刪除這些規則。

原理

Iptables通過對數據包的控制實現防火牆功能,看下圖:

數據包進入機器後,要根據數據包信息對數據包進行相關處理

(1) 一個數據包進入網卡時,它首先進入PREROUTING鏈,內核根據數據包目的IP判斷是否需要轉發出去。

(2) 如果數據包就是進入本機的,它就會沿著圖方向移動,到達INPUT鏈。數據包到了INPUT鏈後,任何進程都會收到它。本機上運行的程序可以發送數據包,這些數據包會經 過OUTPUT鏈,然後到達POSTROUTING鏈輸出。

(3)如果數據包是要轉發出去的,且內核允許轉發,數據包就會如圖所示方向移動,經過 FORWARD鏈,然後到達POSTROUTING鏈輸出。

鏈(chains)是規則校驗序列及數據包傳播的路徑,每一條鏈其實就是眾多規則中的一個檢查清單,每一條鏈中可以有一條或數條規則。當一個數據包到達一個鏈時,iptables就會從鏈中第一條規則開始檢查,看該數據包是否滿足規則所定義的條件。如果滿足,系統就會根據該條規則所定義的方法處理該數據包;否則iptables將繼續檢查下一條規則,如果該數據包不符合鏈中任一條規則,iptables就會根據該鏈預先定義的默認策略來處理數據包。

iptables -P INPUT (DROP|ACCEPT)默認是關的/默認是開的

該命令設置鏈的默認目標,即策略。所有與鏈中任何規則都不匹配的信息包都將被強制使用此鏈的策略

表(tables)是相同規則集合,iptables內置了4個表,即filter表、nat表、mangle表和raw表,分別用於實現包過濾,網路地址轉換、包重構(修改)和數據跟蹤處理四種不同的功能。

3、規則表之間的優先順序:

Raw——mangle——nat——filter

每個表包含的數據鏈不同,在進行處理的時候注意需求,要在哪一鏈上操作。

(1)RAW表

只使用在PREROUTING鏈和OUTPUT鏈上,因為優先順序最高,從而可以對收到的數據包在連接跟蹤前進行處理。一但用戶使用了RAW表,在 某個鏈上,RAW表處理完後,將跳過NAT表和 ip_conntrack處理,即不再做地址轉換和數據包的鏈接跟蹤處理了.

RAW表可以應用在那些不需慎陪御要做nat的情況下,以提高性能。如大亂培量訪問的web伺服器,可以讓80埠不再讓iptables做數據包的鏈接跟蹤處理,以提高用戶的訪問速度。

(2)mangle表

主要用於對指定數據包進行更改,在內核版本2.4.18 後的linux版本中該表包含的鏈為:INPUT鏈(處理進入的數據包),RORWARD鏈(處理轉發的數據包),OUTPUT鏈(處理本地生成的數據包)POSTROUTING鏈(修改即將出去的數據包),PREROUTING鏈(修改即將到來的數據包)

(3)nat表

主要用於網路地址轉換NAT,該表可以實現一對一,一對多,多對多等NAT 工作,iptables就是使用該表實現共享上網的,由於轉換的特性,需進行目的地網址轉換的數據包,就不需要進行來源網址轉換,反之亦然,因此為了提升改寫封包的效率,在防火牆運作時,每個封包只會經過這個規則表一次。如果我們把數據包過濾的規則定義在這個數據表裡,將會造成無法對同一包進行多次比對,因此這個規則表除了作網址轉換外,請不要做其它用途。NAT表包含了PREROUTING鏈(修改即將到來的數據包),POSTROUTING鏈(修改即將出去的數據包),OUTPUT鏈(修改路由之前本地生成的數據包)

(4)filter表

主要用於過濾數據包,該表根據系統管理員預定義的一組規則過濾符合條件的數據包。對於防火牆而言,主要利用在filter表中指定的規則來實現對數據包的過濾。Filter表是默認的表,如果沒有指定哪個表,iptables 就默認使用filter表來執行所有命令,filter表包含了INPUT鏈(處理進入的數據包),RORWARD鏈(處理轉發的數據包),OUTPUT鏈(處理本地生成的數據包)在filter表中只能允許對數據包進行接受,丟棄的操作,而無法對數據包進行更改

命令

iptables [-t 表] -命令 匹配   操作

-A是append命令,添加的規則在最後

-D是刪除命令,刪除第幾條規則

-I是插入命令,添加的規則在第一條

!是取反操作

Sport 是源埠

Dport 是目的埠

列出各個表的規則命令:

iptables -nvL

iptables -t nat -nvL

iptables -t mangle -nvL

iptables -t raw -nvL

iptables -t filter -nvL

iptables -t raw -A PREROUTING -s 182.50.124.75 -j ACCEPT

REJECT     攔阻該數據包,並返回數據包通知對方,可以返回的數據包有幾個選擇:ICMP port-unreachable、ICMP echo-reply 或是tcp-reset(這個數據包包會要求對方關閉聯機),進行完此處理動作後,將不再比對其它規則,直接中斷過濾程序。 範例如下:

iptables -A  INPUT -p TCP --dport 22 -j REJECT --reject-with ICMP echo-reply

DROP   丟棄數據包不予處理,進行完此處理動作後,將不再比對其它規則,直接中斷過濾程序。

REDIRECT    將封包重新導向到另一個埠(PNAT),進行完此處理動作後,將會繼續比對其它規則。這個功能可以用來實作透明代理 或用來保護web 伺服器。例如:

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

MASQUERADE  改寫封包來源IP為防火牆的IP,可以指定port 對應的范圍,進行完此處理動作後,直接跳往下一個規則鏈(mangle:postrouting)。這個功能與 SNAT 略有不同,當進行IP 偽裝時,不需指定要偽裝成哪個 IP,IP 會從網卡直接讀取,當使用撥接連線時,IP 通常是由 ISP 公司的 DHCP伺服器指派的,這個時候 MASQUERADE 特別有用。範例如下:

iptables -t nat -A POSTROUTING -p TCP -j MASQUERADE --to-ports 21000-31000

LOG    將數據包相關信息紀錄在 /var/log 中,詳細位置請查閱 /etc/syslog.conf 配置文件,進行完此處理動作後,將會繼續比對其它規則。例如:

iptables -A INPUT -p tcp -j LOG --log-prefix "input packet"

SNAT  改寫封包來源 IP 為某特定 IP 或 IP 范圍,可以指定 port 對應的范圍,進行完此處理動作後,將直接跳往下一個規則煉(mangle:postrouting)。範例如下:

iptables -t nat -A POSTROUTING -p tcp-o eth0 -j SNAT --to-source 192.168.10.15-192.168.10.160:2100-3200

DNAT  改寫數據包包目的地 IP 為某特定 IP 或 IP 范圍,可以指定 port 對應的范圍,進行完此處理動作後,將會直接跳往下一個規則鏈(filter:input 或 filter:forward)。範例如下:

iptables -t nat -A PREROUTING -p tcp -d 15.45.23.67 --dport 80 -j DNAT --to-destination 192.168.10.1-192.168.10.10:80-100

MIRROR   鏡像數據包,也就是將來源 IP與目的地IP對調後,將數據包返回,進行完此處理動作後,將會中斷過濾程序。

QUEUE    中斷過濾程序,將封包放入隊列,交給其它程序處理。透過自行開發的處理程序,可以進行其它應用,例如:計算聯機費用.......等。

RETURN   結束在目前規則鏈中的過濾程序,返回主規則鏈繼續過濾,如果把自訂規則煉看成是一個子程序,那麼這個動作,就相當於提早結束子程序並返回到主程序中。

MARK  將封包標上某個代號,以便提供作為後續過濾的條件判斷依據,進行完此處理動作後,將會繼續比對其它規則。範例如下:

iptables -t mangle -A PREROUTING -p tcp --dport 22 -j MARK --set-mark 22

保存規則

使用iptables程序建立的規則只會保存在內存中,通常我們在修改了iptables的規則重啟 iptables 後,之前修改的規則又消失了。那麼如何保存新建立的規則呢?

方法1、對於RHEL和ceontos系統可以使用service iptables save將當前內存中的規則保存到 /etc/sysconfig/iptables 文件中

[root@lampbo ~]# service iptables save

方法2、修改/etc/sysconfig/iptables-config 將裡面的IPTABLES_SAVE_ON_STOP="no", 這一句的"no"改為"yes"這樣每次服務在停止之前會自動將現有的規則保存在 /etc/sysconfig/iptables 這個文件中去。

加入開機啟動項

chkconfig --level 345 iptables on

UBUNTU系統   

沒有上述東西,只能使用保存命令保存當前規則。

重啟的就用自啟動腳本載入已經保存的規則。

/etc/network/interfaces腳本自動應用

auto eth0 iface eth0 inet dhcp

pre-up iptables-restore < /etc/iptables.up.rules post-down iptables-save > /etc/iptables.up.rules

iptables --save

https://wangchujiang.com/linux-command/c/iptables.html#%E5%90%AF%E5%8A%A8%E7%BD%91%E7%BB%9C%E8%BD%AC%E5%8F%91%E8%A7%84%E5%88%99

其他問題

ip_conntrack: table full, dropping packet的問題

在啟用了iptables web伺服器上,流量高的時候經常會出現下面的錯誤:

ip_conntrack: table full, dropping packet

這個問題的原因是由於web伺服器收到了大量的連接,在啟用了iptables的情況下,iptables會把所有的連接都做鏈接跟蹤處理,這樣iptables就會有一個鏈接跟蹤表,當這個表滿的時候,就會出現上面的錯誤。iptables的鏈接跟蹤表最大容量為/proc/sys/net/ipv4/ip_conntrack_max,鏈接碰到各種狀態的超時後就會從表中刪除。所以解決方法一般有兩個:(1)加大 ip_conntrack_max 值vi /etc/sysctl.confnet.ipv4.ip_conntrack_max = 393216net.ipv4.netfilter.ip_conntrack_max = 393216(2):降低 ip_conntrack timeout時間vi /etc/sysctl.confnet.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 300net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120上面兩種方法打個比喻就是燒水水開的時候,換一個大鍋。一般情況下都可以解決問題,但是在極端情況下,還是不夠用,怎麼辦?這樣就得反其道而行,用釜底抽薪的辦法。iptables的raw表是不做數據包的鏈接跟蹤處理的,我們就把那些連接量非常大的鏈接加入到iptables raw表。如一台web伺服器可以這樣:iptables -t raw -A PREROUTING -d 1.2.3.4 -p tcp --dport 80 -j NOTRACKiptables -A FORWARD -m state --state UNTRACKED -j ACCEPT

使用注意事項

在默認鏈規則是accept的情況下,規則最後要加drop或reject,否則相當於沒加規則

一般先添加允許自己IP的所有數據包的規則,否則添加drop規則後會被屏蔽

D. linux運維之iptables的一些操作(參考大神的)

1.安裝iptables管理命令

2.載入防火牆的內核模塊

3.查看已載入的模塊

4.啟動防火牆

首先停止firewalld

開啟iptables

1.查看防火牆規則

2.清除防火牆規則

3.添加防火牆規則

4.網路連接狀態

5.刪除某個規則

1.禁止某個埠訪問

2.規則解釋:

3.禁止除跳板機以外的IP訪問

4.匹配埠范圍

 5. 匹配ICMP類型

6.一些操作

1、封掉10.0.0.7

2、讓10.0.0.7和SSH客戶端(10.0.0.1)伺服器可以Ping,其它的不能Ping

3、封掉3306埠

1.從上往下依次匹配

2.一但匹配上,就不在往下匹配了

3.默認規則,默認的情況,默認規則是放行所有

-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

iptables A INPUT -p tcp -m state --dport 22 -j DROP

禁止一個數據包:

tcp協議

訪問的埠是22

禁止源地址是10.0.0.7的主機訪問22埠

禁止源地址是10.0.0.7的主機訪問任何埠

禁止源地址是10.0.0.8的主機訪問80埠

禁止除了10.0.0.7以外的地址訪問80埠

2條規則沖突,會以誰先誰為准

禁止10.0.0.7訪問22和80埠

禁止10.0.0.7訪問22到100之間的所有埠

禁止所有主機ping

放行10.0.0.7可以ping

只允許10.0.0.7可以ping

等同於上一條,優化版,只要不是10.0.0.7就不允許ping

優先順序:

匹配頻次最高的條件放前面

E. linux下查看iptables開放了哪些埠的命令是什麼

  1. 打開指定埠:/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT #80為指定埠

  2. 將更改進行保存:/etc/rc.d/init.d/iptables save

  3. 直接在/etc/sysconfig/iptables中增加一行:-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

  4. 關閉埠:iptables -A INPUT -p tcp --dport 111 -j DROP

  5. 開發不連續埠(包括單個):iptables -A INPUT -p tcp -m multiport --dport 21,20 -j ACCEPT

F. linux查看防火牆規則的命令

在Linux 系統中可以使用 iptables 命令查看和配置各種防火牆規則。當然了,在配置不同功能的防火牆規則時會帶有不同的具體參數。

G. linux 命令iptables -t nat

iptables -t nat -vnL是什麼命令?
用詳細方式列出 nat 表所有鏈的所有規則,只顯示 IP 地址和埠號

iptables -L
粗略列出 filter 表所有鏈及所有規則

iptables -t nat -vxnL PREROUTING
用詳細方式列出 nat 表 PREROUTING 鏈的所有規則以及詳細數字,不反解

iptables -t nat -F PREROUTING
-F: FLASH,清空規則鏈的(注意每個鏈的管理許可權)
PREROUTING (路由前)
-t nat:顯示所有的關卡的信息

iptables -t nat -F 清空nat表的所有鏈

iptables -t nat -F PREROUTING 清空nat表PREROUTING鏈
iptables -t nat -vnL | grep SNAT | awk -F : {'print $2'} 得到snat ip
iptables -t nat -D POSTROUTING -o eth1 -j SNAT --to ${snat_ip} 刪除所有源地址轉換表項
iptables -t nat -A PREROUTING -i %{G_HOST_IF0_0_0} -p tcp --dport %{G_TESTBED_SELENIUM_DPORT} -j DNAT --to %{G_PROD_IP_BR0_0_0}:80 添加源轉換表項
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to ${ip} 添加目的轉換表項
iptables -t nat -vnL 察看定義規則的詳細信息

閱讀全文

與linuxiptable命令相關的資料

熱點內容
編譯器地址8位元組對齊 瀏覽:464
三菱plc編程win1064 瀏覽:258
高中英語單詞pdf 瀏覽:425
編譯原理詞法分析常見問題 瀏覽:197
車小藝app怎麼更新 瀏覽:77
手機app被管控如何移除 瀏覽:753
51單片機溫濕度檢測 瀏覽:575
安卓抖音顯示沒網路是怎麼回事 瀏覽:817
2d我的世界源碼 瀏覽:618
怎樣製作貼天花板的解壓球 瀏覽:337
伺服器如何打開蘋果 瀏覽:96
高響應比演算法的實現 瀏覽:848
windows寫命令行 瀏覽:61
騰訊天津數據中心伺服器雲空間 瀏覽:974
單片機掃描按鍵 瀏覽:386
如何設置google伺服器 瀏覽:697
linuxtrace工具源碼 瀏覽:179
源碼第二次開發 瀏覽:786
如何獲取網頁php源碼 瀏覽:729
還用飛那麼源碼 瀏覽:206