Linux網路相關命令firewalld和netfilter、iptables 使用(6/22)

來源:互聯網
上載者:User

標籤:nat表   ima   通過   跳轉   個數   檢查   time   /etc   tis   

iptables和netfilter的關係:

netfilter在核心空間的代碼根據table中的rules,完成對packet的分析和處置。但是這些table中的具體的防火牆rules,還是必須由系統管理員親自編寫。核心中的netfilter只是提供了一個機制,它並不知道該怎樣利用這個機制,寫出合適的rules,來實現一個網路防火牆。

那麼,系統管理員編寫的rules,怎樣進入位於核心空間中的netfilter維護的table中去呢?這個任務是由iptables這個工具來完成的。

說白了就是netfilter是位於核心裡的,iptables是位於使用者空間的管理工具。有了iptables,使用者空間就可以和核心中的netfilter進行交流,維護table中的防火牆rules了。

 

[[email protected] ~]# ifconfig -a  當網卡宕掉了或者沒有IP時候是不顯示的

ifup ens33  開啟網卡

ifdown ens33  關閉網卡

一般增加DNS或者網關的時候,就可以使用ifdown命令。

[[email protected] ~]# ifdown ens33 && ifup ens33  如果是需要在遠程終端上面操作,可以把2條命令放一起執行。

設定一個虛擬網卡,需要把網卡設定檔裡面name修改為ens33:0,IP地址更換一個。

添加的虛擬網卡IP同樣也是可以ping通的↑

[[email protected] network-scripts]# mii-tool ens33  查看網線是否串連網卡並且網路是否連通

[[email protected] network-scripts]# ethtool ens33  也可以查看網卡是否串連

[[email protected] network-scripts]# hostnamectl set-hostname abc-001  修改主機名稱

更改DNS直接去修改DNS設定檔即可,也可以臨時去編輯這個檔案/etc/resolv.conf 

[[email protected] network-scripts]# cat /etc/hosts

這個檔案是Linux和Windows都有的,可以在本機更改解析地址,只針對本機生效。

格式是左邊是IP,右邊是網域名稱,可以支援一個IP對應多個網域名稱,用空格分隔開。

如果修改成一個網域名稱對應多個IP,那麼會以最後一行的為準。

 

10.12 firewalld和netfilter

setenforce 0  可以臨時關閉selinux

如果要永久關閉selinux,需要修改設定檔vi /etc/selinux/config 然後重啟系統即可。

可以使用getenforce查看selinux狀態,如果是enforcing表示開啟,如果是permissive表示臨時關閉。

netfilter在CentOS6之前使用,在CentOS7裡面預設使用firewalld,當然也可以在CentOS7裡面先關閉firewalld,然後在開啟netfilter,同樣是可以使用CentOS6的防火牆機制。

關閉firewalld方法:

# systemctl disable firewalld

# systemctl stop firewalld

然後在開啟netfilter,開啟之前需要先安裝一個包。

# yum install -y iptables-services

安裝完成後再開啟

# systemctl enable iptables

# systemctl start iptables

# iptables -nvl  查看iptables服務啟動後的預設規則

 

10.13 netfilter5表5鏈介紹

1.netfilter的5個表filter       : INPUT                 FORWARD           OUTPUTnat         : PREROUTING      POSTROUTING    OUTPUT   mangle  : PREROUTING      INPUT                  OUTPUT    POSTROUTINGraw        : PREROUTING      OUTPUTsecurity  :   SECMARK and CONNSECMARK      INPUT      OUTPUT        FORWARD

在CentOS6裡面只有4個表,可以通過man命令查看netfilter的5個表。

 [[email protected] ~]# man iptables

iptables和netfilter的關係:

       這是第一個要說的地方,Iptables和netfilter的關係是一個很容易讓人搞不清的問題。很多的知道iptables卻不知道 netfilter。其實iptables只是Linux防火牆的管理工具而已,位於/sbin/iptables。真正實現防火牆功能的是 netfilter,它是Linux核心中實現包過濾的內部結構。

 

iptables傳輸資料包的過程

① 當一個資料包進入網卡時,它首先進入PREROUTING鏈,核心根據資料包目的IP判斷是否需要轉送出去。 
② 如果資料包就是進入原生,它就會沿著圖向下移動,到達INPUT鏈。資料包到了INPUT鏈後,任何進程都會收到它。本機上啟動並執行程式可以發送資料包,這些資料包會經過OUTPUT鏈,然後到達POSTROUTING鏈輸出。 
③ 如果資料包是要轉寄出去的,且核心允許轉寄,資料包就會向右移動,經過FORWARD鏈,然後到達POSTROUTING鏈輸出。

iptables的規則表和鏈:

      表(tables)提供特定的功能,iptables內建了4個表,即filter表、nat表、mangle表和raw表,分別用於實現包過濾,網路位址轉譯、包重構(修改)和資料跟蹤處理。

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

       Iptables採用“表”和“鏈”的分層結構。在REHL4中是三張表五個鏈。現在REHL5成了四張表五個鏈了,不過多出來的那個表用的也不太多,所以基本還是和以前一樣。下面羅列一下這四張表和五個鏈。注意一定要明白這些表和鏈的關係及作用。

 

3.設定虛擬網卡1.[[email protected] ~]# cd /etc/sysconfig/network-scripts/                   #進入網卡配置的目錄2.[[email protected] network-scripts]# cp ifcfg-ens33 ifcfg-ens33\:1     # 複製一份網卡的設定檔,更名為ens33:1    反斜線表示脫義3.[[email protected] network-scripts]# vi ifcfg-ens33:1                             #編輯設定檔    NAME=ens33:1             DEVICE=ens33:1   可以刪除網關和DNS   重新設定ip在一個網段 4.[[email protected] network-scripts]# ifdown ens33:1 && ifup ens33:1   #重啟網卡配置生效 4. mii-tool     ethtool      這兩個命令都可以查看網卡是否串連成功, mii-tool 不能使用的時候可以用  ethtool[[email protected] network-scripts]# mii-tool ens33SIOCGMIIPHY on ‘ens33‘ failed: Operation not supported     #提示不支援 [[email protected] network-scripts]# ethtool ens33                   #使用ethtool命令Settings for ens33:    Current message level: 0x00000007 (7)                   drv probe link    Link detected: yes                                         #Link detected為yes表示串連成功,no為位串連 5.編輯 /etc/hosts 檔案,添加IP和網域名稱,實現網域名稱跳轉1. [[email protected] network-scripts]# ping www.qq.com                                           #ping www.qq.com   可以正常ping    PING www.qq.com (14.17.42.40) 56(84) bytes of data.    64 bytes from 14.17.42.40 (14.17.42.40): icmp_seq=1 ttl=128 time=11.0 ms    --- www.qq.com ping statistics ---    3 packets transmitted, 3 received, 0% packet loss, time 11028ms    rtt min/avg/max/mdev = 7.342/42.114/107.962/46.586 ms 2. [[email protected] network-scripts]# vim /etc/hosts            #編輯設定檔,將網域名稱跳轉到192.168.177.66    在設定檔裡添加以下行:    192.168.177.66 www.qq.com 3.[[email protected] network-scripts]# ping www.qq.com   PING www.qq.com (192.168.177.66) 56(84) bytes of data.   64 bytes from www.qq.com (192.168.177.66): icmp_seq=1 ttl=64 time=0.049 ms          #可以看到ping  www.qq.com 時跳轉到192.168.177.66   --- www.qq.com ping statistics ---  3 packets transmitted, 3 received, 0% packet loss, time 2002ms  rtt min/avg/max/mdev = 0.049/0.094/0.179/0.060 ms 二、firewalld和netfilter1.永久關閉selinux防火牆[[email protected] ~]# vi /etc/selinux/config    #編輯設定檔 將SELINUX=enforcing更改為 disabled2. getenforce 和 setenforce 01. [[email protected] ~]# getenforce       #使用getenforce可以查看selinux的狀態,Enforcing 是開啟的意思    Enforcing2. [[email protected] ~]# setenforce 0     #使用setenforce 0  臨時關閉selinux,3. [[email protected] ~]# getenforce            Permissive                  # 臨時關閉selinux後,狀態變更為Permissive,要到阻斷的時候,不會去阻攔,會警告和記錄  3. netfilter和firewalld都是linux的防火牆,在centos7之前使用的是netfilter,之後使用的是firewalld。    今天學習的是netfilter,所以要先關閉firewalld,再開啟netfilter。1.[[email protected] ~]# systemctl disable firewalld                    ##暫停 firewalld服務         Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.   Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.2.[[email protected] ~]# systemctl stop firewalld                         ##停止進程3.[[email protected] ~]# yum install -y iptables-services             ##安裝iptables-services  4.[[email protected] ~]# systemctl enable iptables                      ##啟動服務   Created symlink from /etc/systemd/system/basic.target.wants/iptables.service to /usr/lib/systemd/system/iptables.service.5.[[email protected] ~]# systemctl start iptables                         ##啟動進程

10.14 iptables文法

# iptables -nvL  查看iptables規則

# service iptables restart  重啟後再查看規則還是一樣

規則儲存路徑 /etc/sysconfig/iptables

如果不想要預設的規則,可以使用iptables -F 清空。

清空規則後,儲存路徑的設定檔內容是不會被清空的,如果想儲存新規則,需要執行這條命令service iptables save 才會把新規則內容儲存到設定檔去。

# iptables -t filter -nvL  不加-t就是filter表

# iptables -t nat -nvL  也可以查看nat表

# iptables -Z; iptables -nvL  可以把計數器清零

# iptables -A INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP

-A表示and增加一條規則,針對的鏈是input鏈,-s指定一個來源IP,-p指定一個協議,來源的連接埠1234,目標的IP和目標的連接埠-j

# iptables -I INPUT -p tcp --dport 80 -j DROP  -大小字母I表示insert插入到最前面第一行去,而-A是增加到最後一行去。

# iptables -D INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP  刪除最後一行的規則

# iptables -D INPUT -p tcp --dport 80 -j DROP  刪除第一行的規則

如果忘記之前寫的規則,想再刪除也可以通過下面的方法實現,首先顯示出規則的行數,然後在刪除指定行的規則。

# iptables -nvL --line-number  顯示規則的行數

# iptables -D INPUT 7  例如刪除第7行的規則

# iptables -P OUTPUT DROP  預設策略的規則,建議不要操作,保持預設即可。 

Linux網路相關命令firewalld和netfilter、iptables 使用(6/22)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.