七周三次课(1月24日) 10.11 Linux网络相关 10.12 firewalld和netfilter 10.13 netfilter5表5链介绍 10.14 iptables语法

时间:2021-09-04 13:52:58

七周三次课(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 ~]#

七周三次课(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语法

 

 七周三次课(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语法