標籤: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)