一、Linux 網絡相關html
ifconfig 查看網卡IP,見下圖,linux
net-tools 包以前安裝過了,這邊還能夠執行這個命令 yum install net-tools ,是由於作了更新。ip add 命令見下圖,web
兩個命令相比較,ifconfig 的結果顯得比較清爽,方便查看。ifconfig相似於windows的ipconfig,不加任何選項和參數只打印當前網卡的IP相關信息(子網掩碼、網關等)在以前的章節中介紹過它。shell
ifconfig 有個 -a 選項,見下圖,vim
當網卡沒有IP的時候,這個命令是不顯示的,加上 -a 就能夠查看到。windows
關於關閉網卡和啓動網卡的命令,具體操做見下圖,centos
在PuTTY上操做,屬於遠程鏈接,使用的是 ens33 這個網卡,使用命令 ifdown 操做是沒有意義的,會直接把這個終端斷掉,沒有辦法繼續打命令。因此要回到原始的虛擬機上面up回來,在虛擬機上先用 ifconfig 命令查看,見下圖,安全
能夠看到,ens33上面沒有IP地址了。如今從新打開,輸入命令 ifup ens33 ,回車,見下圖,bash
能夠看到 IP 地址又出現了,而後PuTTY上顯示下圖,服務器
以上就是關閉網卡ifdown和啓動網卡ifup的操做,那麼這兩個命令何時用呢?有時候會單獨對一個網卡作更改,好比改了配置文件,須要重啓服務,這個時候不想全部的網卡都重啓一遍,只想重啓指定的網卡,這個時候就可使用 ifdown 和 ifup 命令來操做。可是遠程鏈接的話,最好不要使用 ifdown 這個命令,會直接連不上服務器,致使遠程操做不了。因此,咱們應該這樣操做,輸入命令 ifdown ens33 && ifup ens33 ,回車,見下圖,
兩個命令一塊兒執行就沒有問題了。
還能夠給網卡設定虛擬的IP,具體操做見下圖,
進入目錄 network-scripts ,拷貝文件 ifcfg-ens33 ,這邊 \:0 反斜槓 \ 是爲脫義後面的 : 。而後進入文件,
更改的內容,具體見下圖紅色框框,
保存後退出,重啓網卡服務,見下圖,
接着查看 ifconfig ,見下圖,
能夠看到,多了一個網卡 ens33:0 ,IP地址爲 192.168.218.150 。接着試一下這個網卡能不能 ping ,用Windows來ping ,見下圖,
能夠看到,結果是能夠的。如何啓動Windows的這個界面,直接在桌面左下方的搜索欄裏面搜索 ping ,而後選擇紅色框框內容,點擊進去便可。
系統查看網卡是否鏈接,具體操做見下圖,
mii-tool ens33 命令和 ethtool ens33 命令均可以查看網卡是否鏈接,顯示的結果分別是 ok 和 yes ,都是能夠鏈接的意思。而不能鏈接的話,顯示的是 no 。
更改主機名,使用命令 hostnamectl set-hostname lyslinux-001 ,見下圖,
更改主機名以後,須要重啓,前綴名稱纔會更新,圖中使用命令 bash ,進入子shell也能夠實現前綴主機名更新。
接着查看配置文件,見下圖,
這些是在網卡配置文件裏面定義的,輸入命令 vi /etc/sysconfig/network-scripts/ifcfg-ens33 ,回車,便可查看,
都是在這裏面定義的,咱們也能夠本身定義一個DNS2,上圖紅色框框內容是增長上去的。保存後退出,往下操做,
重啓網卡以後,能夠看到DNS的配置文件多了上圖紅色框框的內容。固然也能夠臨時編輯文件 /etc/resolv.conf ,輸入命令 vim /etc/resolv.conf ,回車,見下圖,
這裏面的內容是能夠更改的,可是更改的內容僅當次生效,重啓系統以後就會被配置文件的內容覆蓋掉。因此想要永久生效的話,仍是須要更改配置文件。
下面說一下文件 /etc/hosts ,見下圖,
接着改一下文件的解析,回車,見下圖,
增長上圖紅色框框的內容,保存後退出。繼續 ping www.qq123.com,見下圖,
能夠發現IP地址變了,更改文件的解析就能夠實現,可是這個操做僅僅在本機生效。在Windows上操做確定是不行的,見下圖,
網站能夠運行,可是IP地址不同。
文件 /etc/hosts 的解析,支持一個IP多個域名,輸入命令 vim /etc/hosts ,回車,見下圖,
增長上圖紅色框框的內容,保存後退出,ping www.333.com,見下圖,
能夠看到,輸入的兩個解析內容,生效的是後面的解析。說明重複的內容中,之後面的內容爲準生效。一行裏面能夠支持一個IP對應多個域名,僅支持一行的內容,換行就不能生效了,而且左邊是IP,右邊是域名。
總結:
ifconfig 查看網卡IP
yum install net-tools 安裝或更新 ifconfig 命令
ip add 查看網卡IP,結果相比於 ifconfig 命令雜亂
ifconfig -a 當網卡沒有IP的時候,這個命令是不顯示的,加上 -a 就能夠查看到
ifdown 關閉網卡
ifup 啓動網卡
ifdown ens33 && ifup ens33 關閉和啓動網卡ens33同時進行,用於遠程鏈接服務器時
mii-tool ens33 命令和 ethtool ens33 命令均可以查看網卡是否鏈接,顯示的結果分別是 ok 和 yes
hostnamectl set-hostname lyslinux-1 更改主機名爲 lyslinux-1
vi /etc/sysconfig/network-scripts/ifcfg-ens33 能夠更改配置文件爲自定義內容
/etc/hostname 主機名配置文件
/etc/resolv.conf DNS配置文件
vi /etc/hosts 更改文件 /etc/hosts 的解析,能夠實現IP地址的更改,可是更改僅僅在本機生效,一行裏面同時也支持一個IP多個域名,僅支持一行的內容,換行就不能生效了,而且左邊是IP,右邊是域名。在重複的內容中,之後面的內容爲準生效。
二、selinux
什麼是防火牆
防火牆是指設置在不一樣網絡或網絡安全域之間的一系列部件的組合, 它能加強機構內部網絡的安全性.
防火牆經過訪問控制機制, 從而決定:
* 哪些內部請求容許訪問外部服務(即出去的包),
* 哪些外部請求容許訪問內部服務(即進入的包).
它能夠根據網絡傳輸的類型決定IP包是否能夠傳進或傳出內部網.
經過使用防火牆能夠實現如下功能:
* 能夠保護易受攻擊的服務;
* 控制內外網之間網絡系統的訪問;
* 集中管理內網的安全性, 下降管理成本;
* 提升網絡的保密性和私有性;
* 記錄網絡的使用狀態, 爲安全規劃和網絡維護提供依據.
selinux 是 Redhat/CentOS 系統特有的安全機制。不過由於這個東西限制太多,配置也特別繁瑣因此幾乎沒有人去真正應用它。因此裝完系統,咱們通常都要把selinux關閉,以避免引發沒必要要的麻煩。關閉 selinux 的方法爲,使 「SELINUX=disabled」, 默認爲 enforcing。
輸入命令 vi /etc/selinux/config ,回車,見下圖,
將上圖紅色框框的內容改成 disable 以後,保存退出。保存該配置文件後,重啓機器方可生效。咱們可使用 getenforce 命令得到當前 selinux 的狀態,見下圖,
三、 netfilter 防火牆
Netfilter是Linux 2.4.x引入的一個子系統,它做爲一個通用的、抽象的框架,提供一整套的hook函數的管理機制,使得諸如數據包過濾、網絡地址轉換(NAT)和基於協議類型的鏈接跟蹤成爲了可能。
netfilter的架構就是在整個網絡流程的若干位置放置了一些檢測點(HOOK),而在每一個檢測點上登記了一些處理函數進行處理。
centos6和centos7都有iptables,這裏的iptables是一個工具(或者叫命令),在centos6上的防火牆叫作netfilter,centos7上防火牆叫作firewalld,而它們底層都是基於iptables的。三者的具體關係見下圖,
怎麼關閉 firewalld 防火牆,見下圖,
systemctl disable firewalld 命令表示先中止防火牆服務,而後 systemctl stop firewalld 命令表示關閉防火牆服務。
接着開啓 netfilter 防火牆,開啓以前,須要先安裝一個包,輸入命令 yum install -y iptables-services ,回車,見下圖,
安裝完成以後,就能夠開啓 iptables 服務,即開啓 netfilter 防火牆服務,見下圖,
使用命令 iptables -nvL ,能夠查看 iptables 的默認規則,見下圖,
四、netfilter 的5表5鏈
先 man iptables 查看,回車,見下圖,
往下翻,見下圖,
以上就是 netfilter 防火牆的5個表,filter,nat,mangle,raw,security(Centos7以前沒有這個表) 。
filter 表用於過濾包,最經常使用的表,有INPUT、FORWARD、OUTPUT三個鏈
nat 表用於網絡地址轉換,有PREROUTING、OUTPUT、POSTROUTING三個鏈
managle 表用於給數據包作標記,而後根據標記去操做那些包,幾乎用不到
raw 表能夠實現不追蹤某些數據包,幾乎用不到
security 表在centos6中並無,用於強制訪問控制(MAC)的網絡規則,幾乎用不到
五個鏈:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
PREROUTING:做用是在包剛剛到達防火牆時改變它的目的地址,若是須要的話
INPUT:做用於進入本機的包
FORWARD:做用於那些跟本機無關的包
OUTPUT:做用於本機送出的包,改變本地產生的包的目的地址
POSTROUTING:在包就要離開防火牆以前改變其源地址
iptables簡介
netfilter/iptables(簡稱爲iptables)組成Linux平臺下的包過濾防火牆,與大多數的Linux軟件同樣,這個包過濾防火牆是免費的,它能夠代替昂貴的商業防火牆解決方案,完成封包過濾、封包重定向和網絡地址轉換(NAT)等功能。
iptables基礎
規則(rules)其實就是網絡管理員預約義的條件,規則通常的定義爲「若是數據包頭符合這樣的條件,就這樣處理這個數據包」。規則存儲在內核空間的信息 包過濾表中,這些規則分別指定了源地址、目的地址、傳輸協議(如TCP、UDP、ICMP)和服務類型(如HTTP、FTP和SMTP)等。當數據包與規 則匹配時,iptables就根據規則所定義的方法來處理這些數據包,如放行(accept)、拒絕(reject)和丟棄(drop)等。配置防火牆的 主要工做就是添加、修改和刪除這些規則。
iptables和netfilter的關係:
這是第一個要說的地方,Iptables和netfilter的關係是一個很容易讓人搞不清的問題。不少的知道iptables殊不知道 netfilter。其實iptables只是Linux防火牆的管理工具而已,位於/sbin/iptables。真正實現防火牆功能的是 netfilter,它是Linux內核中實現包過濾的內部結構。
iptables傳輸數據包的過程
① 當一個數據包進入網卡時,它首先進入PREROUTING鏈,內核根據數據包目的IP判斷是否須要轉送出去。
② 若是數據包就是進入本機的,它就會沿着圖向下移動,到達INPUT鏈。數據包到了INPUT鏈後,任何進程都會收到它。本機上運行的程序能夠發送數據包,這些數據包會通過OUTPUT鏈,而後到達POSTROUTING鏈輸出。
③ 若是數據包是要轉發出去的,且內核容許轉發,數據包就會如圖所示向右移動,通過FORWARD鏈,而後到達POSTROUTING鏈輸出。
下面說法是4表5鏈的內容,如今是5表5鏈,多出來的表也幾乎用不到。
iptables的規則表和鏈:
表(tables)提供特定的功能,iptables內置了4個表,即filter表、nat表、mangle表和raw表,分別用於實現包過濾,網絡地址轉換、包重構(修改)和數據跟蹤處理。
鏈(chains)是數據包傳播的路徑,每一條鏈其實就是衆多規則中的一個檢查清單,每一條鏈中能夠有一 條或數條規則。當一個數據包到達一個鏈時,iptables就會從鏈中第一條規則開始檢查,看該數據包是否知足規則所定義的條件。若是知足,系統就會根據 該條規則所定義的方法處理該數據包;不然iptables將繼續檢查下一條規則,若是該數據包不符合鏈中任一條規則,iptables就會根據該鏈預先定 義的默認策略來處理數據包。
Iptables採用「表」和「鏈」的分層結構。具體見下圖,
規則表:
1.filter表——三個鏈:INPUT、FORWARD、OUTPUT
做用:過濾數據包 內核模塊:iptables_filter.
2.Nat表——三個鏈:PREROUTING、POSTROUTING、OUTPUT
做用:用於網絡地址轉換(IP、端口) 內核模塊:iptable_nat
3.Mangle表——五個鏈:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
做用:修改數據包的服務類型、TTL、而且能夠配置路由實現QOS內核模塊:iptable_mangle(別看這個表這麼麻煩,我們設置策略時幾乎都不會用到它)
4.Raw表——兩個鏈:OUTPUT、PREROUTING
做用:決定數據包是否被狀態跟蹤機制處理 內核模塊:iptable_raw
規則鏈:
1.INPUT——進來的數據包應用此規則鏈中的策略
2.OUTPUT——外出的數據包應用此規則鏈中的策略
3.FORWARD——轉發數據包時應用此規則鏈中的策略
4.PREROUTING——對數據包做路由選擇前應用此鏈中的規則
(記住!全部的數據包進來的時侯都先由這個鏈處理)
5.POSTROUTING——對數據包做路由選擇後應用此鏈中的規則
(全部的數據包出來的時侯都先由這個鏈處理)
規則表之間的優先順序:
Raw——mangle——nat——filter
規則鏈之間的優先順序(分三種狀況):
第一種狀況:入站數據流向
從外界到達防火牆的數據包,先被PREROUTING規則鏈處理(是否修改數據包地址等),以後會進行路由選擇(判斷該數據包應該發往何處),若是數據包 的目標主機是防火牆本機(好比說Internet用戶訪問防火牆主機中的web服務器的數據包),那麼內核將其傳給INPUT鏈進行處理(決定是否容許通 過等),經過之後再交給系統上層的應用程序(好比Apache服務器)進行響應。
第二衝狀況:轉發數據流向
來自外界的數據包到達防火牆後,首先被PREROUTING規則鏈處理,以後會進行路由選擇,若是數據包的目標地址是其它外部地址(好比局域網用戶經過網 關訪問QQ站點的數據包),則內核將其傳遞給FORWARD鏈進行處理(是否轉發或攔截),而後再交給POSTROUTING規則鏈(是否修改數據包的地 址等)進行處理。
第三種狀況:出站數據流向
防火牆本機向外部地址發送的數據包(好比在防火牆主機中測試公網DNS服務器時),首先被OUTPUT規則鏈處理,以後進行路由選擇,而後傳遞給POSTROUTING規則鏈(是否修改數據包的地址等)進行處理。
以上內容,詳見 http://www.cnblogs.com/metoy/p/4320813.html
擴展(selinux瞭解便可)
1. selinux教程 http://os.51cto.com/art/201209/355490.htm
2.selinux pdf電子書 http://pan.baidu.com/s/1jGGdExK
總結:
getenforce 查看當前 selinux 的狀態,Enforcing 表示開啓,Permissive 表示關閉。
setenforce 0 臨時關閉 selinux
vi /etc/selinux/config 進入配置selinux文件,更改SELINUX=disabled,能夠永久關閉selinux
systemctl disable firewalld 表示先中止防火牆服務
systemctl stop firewalld 表示關閉防火牆服務
5個表: filter,nat,mangle,raw,security
5個鏈: PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
本機: PREROUTING →INPUT →OUTPUT →POSTROUTING
非本機:PREROUTING→FORWARD→POSTROUTING
五、iptables 語法
查看規則,輸入命令 iptables -nvL ,回車,見下圖,
如今重啓下,再查看,見下圖,
能夠看到,規則沒有改變。那麼規則在哪裏保存的呢?見下圖,
清空規則,使用命令 iptables -F ,見下圖,
清空規則以後,使用命令 iptables -nvL,就看不到默認規則了,可是配置文件 /etc/sysconfig/iptables 裏面的內容沒有改變。也就是說,想要把當前的規則保存到配置文件裏,還須要執行一個命令 service iptables save ,這樣清空的規則纔會生效。若是不保存的話,能夠重啓 iptables ,就會加載回來,見下圖,
也就是說,重啓服務器或是重啓 iptables 規則,都會去加載配置文件上的規則。
這些默認的規則都在 filter 這個表上,-t 是指定表,不使用 -t 的話,默認就是 filter 這個表。nat 表裏面都是沒有規則的,見下圖,
service iptables save 保存規則。當咱們把規則寫完以後,僅僅在當前內存中生效。想要重啓後還依然生效,就要作這個保存規則的操做。
-Z (大寫)能夠把計數器清零,具體操做見下圖,
注意上圖左邊的紅色框框的內容,一開始是有數據的,執行了 -Z 的命令以後,就清零了。而後一會會以後又有數據了,由於每時每刻都在通訊。
如今給filter表增長一條規則,輸入命令 iptables -A INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP ,回車,見下圖,
這條命令省略了 -t ,默認爲 filter 表;-A 表示增長一條規則,另外還有-I (大寫的i)表示插入一條規則,-D刪除一條規則;INPUT 表示針對的鏈,還能夠是OUTPUT或者FORWORD;-s 表示後面跟着指定的來源IP,-p 表示協議(tcp, udp, icmp),--sport/--dport 後跟來源端口/目標端口;-d 後跟目的IP(主要針對內網或者外網);-j 後跟動做(DROP即把包丟掉,REJECT即包拒絕;ACCEPT即容許包)。上圖中,最下面的紅色框框內容就是剛剛增長上去的規則。
總結一下各個選項的做用:
-A/-D :增長刪除一條規則;
-I :插入一條規則,其實跟-A的效果同樣;
-p :指定協議,能夠是tcp,udp或者icmp;
--dport :跟-p一塊兒使用,指定目標端口;
--sport :跟-p一塊兒使用,指定源端口;
-s :指定源IP(能夠是一個ip段);
-d :指定目的IP(能夠是一個ip段);
-j :後跟動做,其中ACCEPT表示容許包,DROP表示丟掉包,REJECT表示拒絕包;
-i :指定網卡(不經常使用,但有時候能用到);
還有一種用法 -I(大寫的i),輸入命令 iptables -I INPUT -p tcp --dport 80 -j DROP ,回車,見下圖,
能夠看到使用 -I 選項,規則就插入到第一行了。
既然能夠增長和插入,確定也能夠刪除,使用選項 -D ,輸入命令 iptables -D INPUT -p tcp --dport 80 -j DROP ,回車,見下圖,
能夠看到,第一條插入的規則沒有了。一樣的,輸入命令 iptables -D INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP ,回車,見下圖,
能夠看到,增長的最後一條命令也沒有了。
這邊作一個假設,假如忘記掉以前增長或是插入的規則了,要怎麼刪除這些規則呢?先把兩條規則加上去,見下圖,
接着往下操做,輸入命令 iptables -nvL --line-number ,回車,見下圖,
先給每一行前面增長顯示行號,而後再針對行號作操做,輸入命令 iptables -D INPUT 7 ,回車,見下圖,
能夠看到增長和插入的規則,已經成功刪除了。再看一下行號,見下圖,
能夠看到,行號果真仍是少了2行的。
還有一個選項 -P(大寫), 表示預設策略,這是默認的規則,在PuTTY上遠程登陸的話,輸入命令 iptables -P OUTPUT DROP ,回車,會發現整個斷掉了,什麼也執行不了,只能重啓。-P後面跟鏈名,策略內容或者爲DROP或者爲ACCEPT,默認是ACCEPT。
因此要注意:若是你在鏈接遠程服務器,千萬不要隨便敲這個命令,由於一旦你敲完回車你就會斷掉。
這個策略一旦設定後,只能回到原始的虛擬機上,使用命令 iptables -P OUTPUT ACCEPT ,回車,才能恢復成原始狀態。
上面這一步 -P 的選項不要隨意操做,這邊不演示了。
總結:
iptables -nvL 查看 iptables 規則
service iptables restart 重啓 iptables 規則
cat /etc/sysconfig/iptables 查看 iptables 配置文件
iptables -F 清空規則
-t 是指定表,不使用 -t 的話,默認就是 filter 這個表
service iptables save 保存規則
-Z (大寫) 能夠把計數器清零
iptables -A INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP 給filter表增長一條規則
iptables -I INPUT -p tcp --dport 80 -j DROP 在第一行插入一條規則
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 刪除插入的規則
-A/-D :增長刪除一條規則;
-I :插入一條規則,其實跟-A的效果同樣;
-p :指定協議,能夠是tcp,udp或者icmp;
--dport :跟-p一塊兒使用,指定目標端口;
--sport :跟-p一塊兒使用,指定源端口;
-s :指定源IP(能夠是一個ip段);
-d :指定目的IP(能夠是一個ip段);
-j :後跟動做,其中ACCEPT表示容許包,DROP表示丟掉包,REJECT表示拒絕包;
-i :指定網卡(不經常使用,但有時候能用到);
iptables -nvL --line-number 每一行規則前面加上行號
iptables -D INPUT 7 刪除行號爲 7 的規則
iptables -P OUTPUT DROP 用來指定鏈的默認策略,不要隨意執行
iptables -P OUTPUT ACCEPT 恢復鏈的默認策略