1. 程式人生 > >2018.1.24 7周3次課

2018.1.24 7周3次課

ecb 相關配置 網絡工程師 eject 子網 地址 傳輸 centos7 關閉selinux

七周三次課(1月24日)

10.11 Linux網絡相關 10.12 firewalld和netfilter 10.13 netfilter5表5鏈介紹 10.14 iptables語法

10.11 Linux網絡相關

  1. 用ifconfig命令查看網卡IP

前面曾用過ip addr這個命令來查看系統的IP地址。其實在centos 7之前,我們使用最多的命令是ifconfig,它類似於Windows的ipconfig命令,後面不加任何選項和參數時,只打印當前網卡的相關信息 (如子網掩碼、 網關等)。在Windows下設置IP非常簡單,然而在命令窗口下如何設置呢?這就需要修改配置文件/etc/sysconfig/network-scripts/ifcfg-xxx了,這裏的xxx指的是網卡的名字,可以使用ip add命令查看所有網卡。如果你的系統裏沒有ifconfig命令,可以使用yum install –y net-tools安裝。

如果有多個網卡,而你只想重啟某一個網卡的話,可以使用如下命令:

# ifdown ens33 關閉網卡

# ifup ens33 啟動網卡

需要大家註意的是,如果我們遠程登錄服務器,當使用命令ifdown ens33時,很有可能後面的命令ifup ens33不會運行。這樣會導致我們斷網而無法連接服務器

可以使用命令systemctl restart network來重啟網卡。,可以使用如下命令

技術分享圖片

  1. 給一個網卡設定多個IP

在Linux系統中,網卡是可以設定多重IP的

IP的設置過程如下:

# cd /etc/sysconfig/network-scripts

# cp ifcfg-ens33 ifcfg-ens33\:0

之所以加反斜杠(\),是因為要把:轉義,不然在Linux命令行下面無法識別。然後編輯 ifcfg- ens33:0這個配置文件。

技術分享圖片

修改上述NAME、DEVICE、IPADDR,設置完畢重啟網卡

技術分享圖片

技術分享圖片

  1. 查看網卡連接狀態

技術分享圖片

這裏顯示link ok,就說明網卡為連接狀態。如果顯示no link,說明網卡壞了或者沒有連接。

還有一個命令也可以查看網卡的狀態

技術分享圖片

這裏顯示Link detected: yes。如果網卡沒有連接,則顯示Link detected: no

  1. 更改主機名

安裝完系統後,主機名默認為localhost. localdomain, 使用hostname命令就可以查看Linux的主機名,

技術分享圖片

使用hostname命令也可以更改主機名

下次登錄時,命令提示符[root@localhost~] 中的localhost就會更改成新的主機名。不過這樣修改只是保存在內存中,如果重啟,主機名還會變成改動之前的名稱。

如要重啟後使用新的主機名,要用如下命令

更改主機名 hostnamectl set-hostname aminglinux

主機名的相關配置文件/etc/hostname。

技術分享圖片

  1. 設置DNS

DNS是用來解析域名的。平時我們訪問網站都是直接輸人一個網址,而DNS把這個網址解析到一個IP

在Linux下設置DNS非常簡單,只要把DNS地址寫到配置文件/etc/resolv.conf中即可。

技術分享圖片

如果只是臨時修改DNS IP地址,就直接修改/etc/resolv.conf;如果是永久生效的話,還是要修改網卡的配置文件。

在Linux下還有一個特殊文件/etc/hosts也能解析域名,不過需要我們在裏面手動添加IP和域名這內容它的作用是臨時解析某個域名,非常有用。

技術分享圖片

/etc/hosts的格式很簡單,每一行為一條記錄分成兩部分,第一部分是IP,第二部分是域名。關於hosts文件,有以下幾點需要你註意:

  • 一個IP後面可以跟多個域名,可以是幾十個甚至上百個;

  • 每一行只能有一個IP,也就是說一個域名不能對應多個IP;

  • 如果有多行中出現相同的域名(對應的IP不一樣),會按最後面出現的記錄來解析

10.12 firewalld和netfilter

  1. SELinux是Linux系統特有的安全機制。因為這種機制的限制太多,配置也特別煩瑣,所以我們一般都要把SELinux關閉,以免引起不必要的麻煩。

臨時關閉SELinux的方法為:

技術分享圖片

但這僅僅是臨時的,要想永久關閉需要更改配置文件/etc/selinux/config需要把SELINUX= enforcing 改成SELINUX=disabled

更改完後重啟系統方可生效。

  1. netfilter

centos7之前使用netfilter防火墻。centos7開始使用firewalld防火墻

關閉firewalld開啟netfilter方法

禁止firewalld服務開機啟動

技術分享圖片

關閉firewalld服務

技術分享圖片

安裝iptables-services

技術分享圖片

開機啟動iptables

技術分享圖片

啟動iptables服務

技術分享圖片

查看iptable規則

技術分享圖片

上例中,-nvL選項表示查看規則,-F選項表示清除當前規則,但清除只是臨時的,重啟系統或者重啟iptables服務後還會加載已經保存的規則,所以需要使用service tables save保存一下規則。通過上面的命令輸出,我們也可以看到,防火墻規則保存在/etc/sysconfig/iptables中,你可以查看一下這個文件。

netfilter5表5鏈介紹

  1. netfilter的5個表

filter表主要用於過濾包,是系統預設的表,這個表也是用得最多的表。該表內建3個鏈:INPUT、OUTPUT以及FORWARD。 INPUT鏈作用於進入本機的包,OUTPUT鏈作用於本機送出的包,FORWARD鏈作用於那些跟本機無關的包 。

nat表主要用於網絡地址轉換,它也有3個鏈。REROUTING鏈的作用是在包剛剛到達防火墻時改變它的目的地址(如果需要的話),OUTPUT鏈的作用是改變本地產生的包的目的地址,POSTROUTING鏈的作用是在包即將離開防火墻時改變其源地址。

mangle表主要用於給數據包做標記,然後根據標記去操作相應的包。這個表幾乎不怎麽用, 除非你想成為一個高級網絡工程師,否則就不需要太關註。

raw表可以實現不追蹤某些數據包,默認系統的數據包都會被追蹤,但追蹤勢必消耗一定的資源,所以可以用raw表來指定某些端口的包不被追蹤。

security表在centos 6中是沒有的,它用於強制訪問控制 (MAC)的網絡規則。。

2.netfilter的5個鏈

5個鏈分別為PREROUTING、 INPUT、 FORWARD、 OUTPUT、 POSTROUTING

  • REROUTING:數據包進人路由表之前。用於目標地址轉換(DNAT)。

  • INPUT:通過路由表後目的地為本機。處理輸入數據包

  • FORWARDING:通過路由表後,目的地不為本機。處理轉發數據包。

  • OUTPUT:由本機產生,向外轉發。處理輸出數據包。

  • POSTROUTIONG:發送到網卡接口之前。用於源地址轉換(SNAT)。

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成了四張表五個鏈了,不過多出來的那個表用的也不太多,所以基本還是和以前一樣。下面羅列一下這四張表和五個鏈。註意一定要明白這些表和鏈的關系及作用。

技術分享圖片

10.14 iptables語法

iptables是一個非常復雜和功能豐富的工具,所以它的語法也是很有特點的。下面就給大家介紹幾種常用的語法。

查看規則:iptables –nvL。其中-n表示不針對IP反解析主機名,-L表示列出,-v表示列出的信息更加詳細。

技術分享圖片

重啟規則:service restart iptables.service

技術分享圖片

防火墻規則保存在/etc/sysconfig/iptables中

技術分享圖片

清空規則:iptables -F 。如果不加-t指定表,默認只清楚filter表的規則。iptables文件裏還有,重啟規則後會恢復。

技術分享圖片

保存規則:service iptables save

技術分享圖片

-t指定表 iptables -t nat:如果不加-t選項,則顯示的filter表的相關信息。

技術分享圖片

把計數器清零:iptables -Z。把包以及流量計數器清零。

技術分享圖片

增加/刪除一條規則,其用法如下:

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

  • -A/-D:表示增加/刪除一條規則。在指定鏈的末尾添加(append)一條新的規則

  • -I:在指定鏈中插入(insert)一條新的規則。例:iptables -I INPUT 1 --dport 80 -j ACCEPT,默認在第一行添加

  • -p:表示指定協議,可以是tcp、udp或者icmp。

  • --dport:跟-p一起使用,表示指定目標端口。

  • --sport:跟-p一起使用,表示指定源端口。

  • -s:表示指定源IP(可以是一個IP段)。

  • -d:表示指定目的IP(可以是一個IP段)。

  • -j: 後面跟動作,其中ACCEPT表示允許包,DROP表示丟掉包,REJECT表示拒絕包。

  • -i:表示指定網卡

  • -v:查看規則表詳細信息(verbose)的信息

  • -L/S:列出指定鏈或所有鏈的規則。

  • -F :刪除指定鏈或所有鏈的規則

  • -N :創建用戶自定義鏈。例:iptables -N allowed

  • -X :刪除指定的用戶自定義鏈

  • -P :為指定鏈設置默認規則策略,對自定義鏈不起作用。例:iptables -P OUTPUT DROP

  • -Z :將指定鏈或所有鏈的計數器清零

  • -E :更改自定義鏈的名稱。例:iptables -E allowed disallowed,不改變鏈本身

  • -n :ip地址和端口號以數字方式顯示。例:iptables -Ln

技術分享圖片

iptables -I INPUT -p tcp --dport 80 -j DROP

技術分享圖片

有時候服務器上的iptables過多了,你想刪除某一條規則,但又不容易掌握創建時的規則。其實有一種比較簡單的方法,根據編號來刪除規則。

打印規則的序列號:iptables -nvL --line-numbers

技術分享圖片

刪除某一條規則

技術分享圖片

指定網卡規則:

iptables -I INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT

技術分享圖片

預設策略:iptables –P INPUT DROP

-P後面跟鏈名,策略內容或為DROP,或ACCEPT,默認是ACCEPT。註意:如果你在連接遠程服務器,千萬不要隨便執行這個命令,因為一旦輸入命令並回車,遠程服務器就會被斷開。

這個策略一旦設定後,只有使用命令iptables –P INPUT ACCEPT才能恢復成原始狀態。


2018.1.24 7周3次課