1. 程式人生 > >三十一、Linux網絡相關、firewalld和netfilter、netfilter5表5鏈介紹、

三十一、Linux網絡相關、firewalld和netfilter、netfilter5表5鏈介紹、

Linux網絡 filewalld和netfilter netfilter5表5鏈 iptables語法

三十一、Linux網絡相關、firewalld和netfilter、netfilter5表5鏈介紹、iptables語法

一、Linux網絡相關

(一)ifconfig:查看網卡IP,若沒有該命令就安裝net-tools包。

當網卡down(停用)的時候網卡不會顯示IP,加上-a選項就會顯示。示例:

# ifconfig -a。

ifdown ens33/ifup ens33

ifup:啟動網卡。ifdown:停用網卡。

遠程連接服務器時,很可能後面的ifup就不會運行了,這樣會導致斷網而連接不了服務器,所以應該用systemcel restart network來重啟網卡。

當你正在遠程連接這臺服務器時,就不要用ifdown,不然就連不上服務器了。

當你不想把所有網卡都重啟,就用ifdown,前提是你沒連這臺服務器。就是指定重啟單個網卡。

ifdown ens33 && ifup ens33。先停再啟動。最好這樣使用,就能直接啟動指定的網卡了。

# ifdown ens33 && ifup ens33

成功斷開設備 'ens33'。

連接已成功激活(D-Bus 活動路徑:/org/freedesktop/NetworkManager/ActiveConnection/5)

( 二)給一個網卡設定多個IP

設定過程:

# cd /etc/sysconfig/network-scripts/

# cp ifcfg-ens33 ifcfg-ens33\:1

這裏加了脫義符號,是因為要把:轉義,不然Linux命令行無法識別。再編輯這個ifcfg-ens33:1這個配置文件。

# vi !$ 文件內就不用脫義了。

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=static

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_FAILURE_FATAL=no

IPV6_ADDR_GEN_MODE=stable-privacy

NAME=ens33:1

DEVICE=ens33:1

ONBOOT=yes

IPADDR=192.168.93.131

NETMASK=255.255.255.0

GATEWAY=192.168.93.2

DNS1=119.29.29.29

修改一下NAME、DEVICE、IPADDR,dns和網關都可有可無,因為前面那個配置文件已經設置了。設置完後重啟網卡。

# ifdown ens33 && ifup ens33

# ifconfig (再查看就會發現多了個ens33:1)

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet 192.168.93.130 netmask 255.255.255.0 broadcast 192.168.93.255

inet6 fe80::4baf:6071:c82a:762a prefixlen 64 scopeid 0x20<link>

ether 00:0c:29:2f:85:e9 txqueuelen 1000 (Ethernet)

RX packets 1193 bytes 90267 (88.1 KiB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 472 bytes 69521 (67.8 KiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

ens33:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet 192.168.93.131 netmask 255.255.255.0 broadcast 192.168.93.255

ether 00:0c:29:2f:85:e9 txqueuelen 1000 (Ethernet)

(三)查看網卡連接狀態

# mii-tool ens33

ens33: negotiated 1000baseT-FD flow-control, link ok

link ok就說明網卡已連接。

no link,就說明網卡壞了或者沒有連接。

nonsupport有的顯示這個,就是不支持。就可以用:

# ethtool ens33

Settings for ens33:

Supported ports: [ TP ]

Supported link modes: 10baseT/Half 10baseT/Full

100baseT/Half 100baseT/Full

1000baseT/Full

Supported pause frame use: No

Supports auto-negotiation: Yes

Advertised link modes: 10baseT/Half 10baseT/Full

100baseT/Half 100baseT/Full

1000baseT/Full

Advertised pause frame use: No

Advertised auto-negotiation: Yes

Speed: 1000Mb/s

Duplex: Full

Port: Twisted Pair

PHYAD: 0

Transceiver: internal

Auto-negotiation: on

MDI-X: off (auto)

Supports Wake-on: d

Wake-on: d

Current message level: 0x00000007 (7)

drv probe link

Link detected: yes

若沒有連接,最後一行就顯示為no。

(四)更改主機名

# hostname 查看主機名

# hostname ABC 這樣修改只會保存在內存裏,重啟還是之前的名稱。因此改主機名還要修改它的配置文件/etc/hostname。

自動更改文件內容的方法

# hostnamectl set-hostname ABD

(五)設置DNS

DNS配置文件:/etc/resolv.conf

# cat /etc/resolv.conf

# Generated by NetworkManager

nameserver 119.29.29.29

第一行沒實際意義,僅是個註釋。意思是這個文件中的DNS IP地址是由NetworkManager服務生成的。

resolv.conf有固有的格式,一定要寫成nameserver IP的格式。

建議寫兩個或多個nameserver,系統默認用第一個解析域名,第一個不成功時就用第二個。

谷歌的DNS=8.8.8.8

臨時修改DNS IP地址時,就修改DNS配置文件;

若想永久生效,就修改網卡的配置文件。

修改了網卡配置文件的DNS時,DNS配置文件就也改了。

Linux下的一個特殊文件/etc/hosts也能解析域名,不過需要手動添加IP和域名。作用是臨時解析域名,非常有用。該文件內容是:

# cat /etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

編輯該文件時用vim。比如增加一行192.168.93.131 www.baidu.com,那麽再ping這個百度的時候就會ping到這個IP去。

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.93.131 www.baidu.com

/etc/hosts格式很簡單,每一行為一條記錄,分成兩部分,前面是IP,後面是域名。

關於hosts文件,有四點註意事項:

1.一個IP後可以跟多個域名,可以幾十個甚至上百個。

2.每一行只能是一個IP,就是說一個域名不能對應多個IP。

3.若多行中出現相同的域名(對應IP不一樣),會按最前面出現的記錄來解析。

4.這個只在本機生效,改完後立即生效。

二、firewalld和netfilter

Linux防火墻:netfilter

selinux臨時關閉:setenforce 0

selinux永久關閉:# vi /etc/selinux/config

SELINUX=enforcing改為SELINUX=disabled

更改後重啟系統生效。

getenforce:查看selinux狀態。

# getenforce

Disabled

若臨時關閉,再查看會顯示permissive。

太多服務受限於selinux,因此運維一般 都直接關閉它。

netfilter:centos5和6防火墻。

firewalld:centos7的防火墻。

centos7上使用6的防火墻也沒有問題。

iptables僅是一個工具,不是防火墻。

關閉過程:

# systemctl disable firewalld //禁止firewalld服務開機啟動

# systemctl stop firewalld //關閉這個服務

# yum install -y iptables-services //安裝這個包,就可以使用之前版本的iptables了。

# systemctl enable iptables //讓它開機自啟動。

Created symlink from /etc/systemd/system/basic.target.wants/iptables.service to /usr/lib/systemd/system/iptables.service.

# systemctl start iptables //啟動iptables服務

至此,方可使用之前版本的iptables。centos上默認設有規則,但這個規則暫時沒用,就先清除,清除後保存。示例:

# iptables -nvL //-nvL表示查看規則,-F選項表示清除當前規則,但清除只是臨時的,重啟系統或服務還會加載已保存的規則。因此清除後要保存:# iptables -F; service iptables save

通過該命令可發現配置文件在/etc/sysconfig/iptables。

# iptables -F; service iptables save

iptables: Saving firewall rules to /etc/sysconfig/iptables:[ 確定 ]

三、netfilter5表5鏈介紹

netfilter的5個表,可以man iptables一下,有5個表的解釋。

filter表:用於過濾包,是系統預設的表。用得多。

該表內建三個鏈:INPUT、OUTPUT和FORWARD。

INPUT鏈:作用於進入本機的包。

OUTPUT鏈:作用於本機送出的包。

FORWARD鏈:作用於和本機無關的包。

nat表:用於網絡地址切換。偶爾用。

該表有三個鏈:

PREROUTING鏈:在包剛到防火墻時改變它的目的地址。

OUTPUT鏈:改變本地產生的包的目的地址。

POSTROUTING鏈:在包即將離開防火墻時改變其源地址。

mangle表:用於給數據做標記,然後根據標記去操作相應的包。用得少

raw表:實現不追蹤某些數據包,默認系統的數據包都會被追蹤,但追蹤會消耗資源,因此用該表來指定某些端口的包不被追蹤。用得少。

security表:該表centos6裏沒有,用於強制訪問控制(MAC)的網絡規則。用得少。

5個鏈

PREROUTING:數據包進入路由表前。

INPUT:通過路由表後目的地為本機。

FORWARD:通過路由表後目的地不為本機。

OUTPUT:由本機產生,向外轉發。

POSTROUTING:發送到網卡接口之前。

數據包流向:

技術分享圖片技術分享圖片

五、iptables語法

配置文件/etc/sysconfig/iptables

service iptables restart 重啟iptables服務。

service iptables save 保存規則

(一)iptables -t nat -nvL:查看規則。

-t後面跟表名

-nvL表示查看該表規則

-n表示不針對IP反解析主機名

-L表示列出

-v表示列出的信息更詳細。

若不加-t,則打印filter表的相關信息。

清除規則:

iptables -F:把所有規則全部刪除,若不加-t指定表,默認清除filter表。

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

(二)增加/刪除一條規則,用法:

# iptables -A INPUT -s 192.168.93.131 -p tcp --sport 1234 -d 192.168.93.120 --dport 80 -j DROP

此處沒有加-t,因此針對的filter表。

選項註釋:

-A/-D:增加/刪除一條規則

-I:插入一條規則,效果和一樣。

-P:指定協議,可以是tcp、udp或者icmp。

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

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

-s:指定源IP(可以是IP段)

-d:指定目的地IP(可以是IP段)

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

-i:指定網卡。

-P:預設策略。

刪除一條規則時,必須和插入的規則一致。除了-I和-D不同,其他都一樣。

--dport/--sport必須和-p選項一起用,否則會出錯。

iptables -nvL --line--numbers 查看規則。

當想刪除規則時,又不知道規則的具體,就可以查看規則。

-D後面跟鏈名、規則num。num就是查看iptables規則時第1列的值。

-P後跟鏈名,策略內容或為DROP,或為ACCEPT,默認ACCEPT。若正在遠程連接服務器,千萬不要隨便執行這個命令,一執行,遠程連接就斷開。

需求:只針對filter表,預設策略INPUT鏈DROP,其他兩個鏈ACCEPT,然後針對192.168.188.0/24開通22端口,對所有網段開放80端口,對所有網段開放21端口。


三十一、Linux網絡相關、firewalld和netfilter、netfilter5表5鏈介紹、