七周三次课(1月24日) 10.11 Linux网络相关 10.12 firewalld和netfilter 10.13 netfilter5表5链介绍 10.14 iptables语法...
七周三次課(1月24日)
10.11 Linux網絡相關
10.12 firewalld和netfilter
10.13 netfilter5表5鏈介紹
10.14 iptables語法
===============================================================================================================================================================================================================================================================================================================================
Linux網絡相關
用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來重啟網卡。,可以使用如下命令
給一個網卡設定多個IP
在Linux系統中,網卡是可以設定多重IP的
IP的設置過程如下:
# cd /etc/sysconfig/network-scripts
# cp ifcfg-ens33 ifcfg-ens33\:0
之所以加反斜杠(\),是因為要把:轉義,不然在Linux命令行下面無法識別。然后編輯 ifcfg- ens33:0這個配置文件。
修改上述NAME、DEVICE、IPADDR,設置完畢重啟網卡
查看網卡連接狀態
這里顯示link ok,就說明網卡為連接狀態。如果顯示no link,說明網卡壞了或者沒有連接。
還有一個命令也可以查看網卡的狀態
這里顯示Link detected: yes。如果網卡沒有連接,則顯示Link detected: no
更改主機名
安裝完系統后,主機名默認為localhost. localdomain, 使用hostname命令就可以查看Linux的主機名,
使用hostname命令也可以更改主機名
下次登錄時,命令提示符[root@localhost~] 中的localhost就會更改成新的主機名。不過這樣修改只是保存在內存中,如果重啟,主機名還會變成改動之前的名稱。
如要重啟后使用新的主機名,要用如下命令
更改主機名 hostnamectl set-hostname aminglinux
主機名的相關配置文件/etc/hostname。
設置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
SELinux是Linux系統特有的安全機制。因為這種機制的限制太多,配置也特別煩瑣,所以我們一般都要把SELinux關閉,以免引起不必要的麻煩。
臨時關閉SELinux的方法為:
但這僅僅是臨時的,要想永久關閉需要更改配置文件/etc/selinux/config需要把SELINUX= enforcing 改成SELINUX=disabled
更改完后重啟系統方可生效。
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鏈介紹
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才能恢復成原始狀態。
=================================================================================================================================================================================================================================================================================================================================
Last login: Tue Jan 24 23:41:35 2018 from 192.168.183.1
[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.44.128 netmask 255.255.255.0 broadcast 192.168.44.255
inet6 fe80::9d1c:ba9a:850d:5e30 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:f6:5a:ef txqueuelen 1000 (Ethernet)
RX packets 319 bytes 25600 (25.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 133 bytes 11668 (11.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.183.128 netmask 255.255.255.0 broadcast 192.168.183.255
inet6 fe80::aea3:cf3e:1eb8:ac2f prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:f6:5a:f9 txqueuelen 1000 (Ethernet)
RX packets 68 bytes 9189 (8.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 45 bytes 8741 (8.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 4 bytes 340 (340.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4 bytes 340 (340.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@localhost ~]# ifdown ens33; ifup ens33 ^C
[root@localhost ~]# cd /etc/sysconfig//network-scripts/
[root@localhost network-scripts]# ls
ifcfg-ens33 ifdown-ipv6 ifdown-tunnel ifup-isdn ifup-TeamPort
ifcfg-lo ifdown-isdn ifup ifup-plip ifup-tunnel
ifcfg-有線連接_1 ifdown-post ifup-aliases ifup-plusb ifup-wireless
ifdown ifdown-ppp ifup-bnep ifup-post init.ipv6-global
ifdown-bnep ifdown-routes ifup-eth ifup-ppp network-functions
ifdown-eth ifdown-sit ifup-ib ifup-routes network-functions-ipv6
ifdown-ib ifdown-Team ifup-ippp ifup-sit
ifdown-ippp ifdown-TeamPort ifup-ipv6 ifup-Team
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens33\:0
[root@localhost network-scripts]# vi !$
vi ifcfg-ens33\:0
[root@localhost network-scripts]# ifdown ens33 && ifup ens33
無法載入文件 '/etc/sysconfig/network-scripts/ifcfg-ens33'
無法載入文件 '/etc/sysconfig/network-scripts/ifcfg-ens33'
無法載入文件 '/etc/sysconfig/network-scripts/ifcfg-ens33'
無法載入文件 '/etc/sysconfig/network-scripts/ifcfg-ens33'
無法載入文件 '/etc/sysconfig/network-scripts/ifcfg-ens33'
無法載入文件 '/etc/sysconfig/network-scripts/ifcfg-ens33'
ipcalc: bad IPv6 address: :192.168.160.128
ipcalc: bad IPv6 address: :192.168.160.128
ipcalc: bad IPv6 address: :192.168.160.128
arping: :192.168.160.128: 未知的名稱或服務
Error: ??? prefix is expected rather than ":192.168.160.128/".
錯誤 : [/etc/sysconfig/network-scripts/ifup-eth] Error adding address :192.168.160.128 for ens33.
arping: :192.168.160.128: 未知的名稱或服務
Error: ??? prefix is expected rather than ":192.168.160.128/".
無法載入文件 '/etc/sysconfig/network-scripts/ifcfg-ens33'
無法載入文件 '/etc/sysconfig/network-scripts/ifcfg-ens33'
/etc/sysconfig/network-scripts/ifup-aliases:行175: ipseen_:192_168_44_128=ifcfg-ens33:0: 未找到命令
ERROR : [/etc/sysconfig/network-scripts/ifup-aliases] error in ifcfg-ens33:0: already seen ipaddr :192.168.44.128 in :192_168_44_128
[root@localhost network-scripts]# vi ifcfg-ens33\:0
[root@localhost network-scripts]# vi ifcfg-ens33\:0
[root@localhost network-scripts]# vi ifcfg-ens33
[root@localhost network-scripts]# vi ifcfg-ens33\:0
[root@localhost network-scripts]# ifdown ens33 && ifup ens33
無法載入文件 '/etc/sysconfig/network-scripts/ifcfg-ens33'
無法載入文件 '/etc/sysconfig/network-scripts/ifcfg-ens33'
無法載入文件 '/etc/sysconfig/network-scripts/ifcfg-ens33'
無法載入文件 '/etc/sysconfig/network-scripts/ifcfg-ens33'
無法載入文件 '/etc/sysconfig/network-scripts/ifcfg-ens33'
無法載入文件 '/etc/sysconfig/network-scripts/ifcfg-ens33'
ipcalc: bad IPv6 address: :192.168.44.128
ipcalc: bad IPv6 address: :192.168.44.128
ipcalc: bad IPv6 address: :192.168.44.128
arping: :192.168.44.128: 未知的名稱或服務
Error: ??? prefix is expected rather than ":192.168.44.128/".
錯誤 : [/etc/sysconfig/network-scripts/ifup-eth] Error adding address :192.168.44.128 for ens33.
arping: :192.168.44.128: 未知的名稱或服務
Error: ??? prefix is expected rather than ":192.168.44.128/".
無法載入文件 '/etc/sysconfig/network-scripts/ifcfg-ens33'
無法載入文件 '/etc/sysconfig/network-scripts/ifcfg-ens33'
/etc/sysconfig/network-scripts/ifup-aliases:行175: ipseen_:192_168_44_175=ifcfg-ens33:0: 未找到命令
ERROR : [/etc/sysconfig/network-scripts/ifup-aliases] error in ifcfg-ens33:0: already seen ipaddr :192.168.44.175 in :192_168_44_175
[root@localhost network-scripts]# ls
ifcfg-ens33 ifdown-ippp ifdown-TeamPort ifup-ipv6 ifup-Team
ifcfg-ens33:0 ifdown-ipv6 ifdown-tunnel ifup-isdn ifup-TeamPort
ifcfg-lo ifdown-isdn ifup ifup-plip ifup-tunnel
ifcfg-有線連接_1 ifdown-post ifup-aliases ifup-plusb ifup-wireless
ifdown ifdown-ppp ifup-bnep ifup-post init.ipv6-global
ifdown-bnep ifdown-routes ifup-eth ifup-ppp network-functions
ifdown-eth ifdown-sit ifup-ib ifup-routes network-functions-ipv6
ifdown-ib ifdown-Team ifup-ippp ifup-sit
[root@localhost network-scripts]#
[root@localhost ~]# mii-tool ens33
ens33: negotiated 1000baseT-FD flow-control, link ok
[root@localhost ~]# cat /etc/hostname
localhost.localdomain
[root@localhost ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 119.29.29.29
[root@localhost ~]# ping www.qq123.com
PING www.qq123.com (202.91.250.93) 56(84) bytes of data.
64 bytes from www.qq123.com (202.91.250.93): icmp_seq=1 ttl=128 time=22.5 ms
64 bytes from www.qq123.com (202.91.250.93): icmp_seq=2 ttl=128 time=22.2 ms
64 bytes from www.qq123.com (202.91.250.93): icmp_seq=3 ttl=128 time=22.3 ms
64 bytes from www.qq123.com (202.91.250.93): icmp_seq=4 ttl=128 time=22.1 ms
64 bytes from www.qq123.com (202.91.250.93): icmp_seq=5 ttl=128 time=22.0 ms
64 bytes from www.qq123.com (202.91.250.93): icmp_seq=6 ttl=128 time=22.8 ms
64 bytes from www.qq123.com (202.91.250.93): icmp_seq=7 ttl=128 time=22.5 ms
64 bytes from www.qq123.com (202.91.250.93): icmp_seq=8 ttl=128 time=21.8 ms
64 bytes from www.qq123.com (202.91.250.93): icmp_seq=9 ttl=128 time=22.1 ms
^C
--- www.qq123.com ping statistics ---
9 packets transmitted, 9 received, 0% packet loss, time 8014ms
rtt min/avg/max/mdev = 21.881/22.314/22.886/0.314 ms
[root@localhost ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]#
[root@localhost ~]# yun install -y iptables-servvices
-bash: yun: 未找到命令
[root@localhost ~]# yum install -y iptables-servvices
已加載插件:fastestmirror
base | 3.6 kB 00:00:00
epel/x86_64/metalink | 6.6 kB 00:00:00
epel | 4.7 kB 00:00:00
extras | 3.4 kB 00:00:00
updates | 3.4 kB 00:00:00
(1/3): epel/x86_64/group_gz | 266 kB 00:00:00
(2/3): epel/x86_64/updateinfo | 877 kB 00:00:00
(3/3): epel/x86_64/primary_db | 6.2 MB 00:00:00
Loading mirror speeds from cached hostfile
* epel: mirrors.tongji.edu.cn
沒有可用軟件包 iptables-servvices。
錯誤:無須任何處理
[root@localhost ~]# yum install -y iptables-servvices
已加載插件:fastestmirror
Loading mirror speeds from cached hostfile
* epel: mirrors.tongji.edu.cn
沒有可用軟件包 iptables-servvices。
錯誤:無須任何處理
[root@localhost ~]#
?
?
?
?
?
?
?
轉載于:https://www.cnblogs.com/yikebaicai/p/8344082.html
總結
以上是生活随笔為你收集整理的七周三次课(1月24日) 10.11 Linux网络相关 10.12 firewalld和netfilter 10.13 netfilter5表5链介绍 10.14 iptables语法...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JS高级——沙箱
- 下一篇: Redis系列四:redis支持的数据类