三十一、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:发送到网卡接口之前。

数据包流向:

三十一、Linux网络相关、firewalld和netfilter、netfilter5表5链介绍、_Linux三十一、Linux网络相关、firewalld和netfilter、netfilter5表5链介绍、_Linux_02

五、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:插入一条规则,效果和-A一样。只是顺序不同,-I会比-A的位置要靠前。所以-I会被优先过滤。

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

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

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

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

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

-j:后面跟动作,其中ACCEPT表示允许包,DROP表示丢掉宝,REJECT表示拒绝包。

-i:指定网卡。(用得少)

-P:预设策略。

DROP:把数据包扔掉,不会再看数据包,直接丢掉。(常用)

REJECT:拒绝数据包,数据包来了先看一下,然后反馈信息,再扔掉。

两效果一样,相当于把IP封掉。

删除一条规则时,必须和插入的规则一致。除了-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端口。