您的位置:首页 > 理论基础 > 计算机网络

11.29 Linux网络相关 firewalld和netfilter netfilter5表5链介绍 iptables语法

2017-11-29 00:00 1566 查看

10.11 Linux网络相关

ifconfig查看网卡ip(yum install net-tools) //7默认没有,需要安装

ifup ens33/ifdown ens33 //单独对某个指定网卡操作的时候用

ifdown ens33 && ifup ens33 //这样做安全

设定虚拟网卡ens33:1

mii-tool ens33 查看网卡是否连接



ethtool ens33 也可以查看网卡是否连接



更改主机名 hostnamectl set-hostname aminglinux

DNS配置文件/etc/resolv.conf

/etc/hosts文件

1. ifconfig 查看网卡IP

ifconfig类似与windows的ipconfig,不加任何选项和参数只打印当前网卡的IP相关信息(子网掩码、网关等)在之前的章节中曾经了解过。在windows下设置IP非常简单,然而在命令窗口下如何设置?这就需要去修改配置文件/etc/sysconfig/network-scripts/ifcfg-xxx了。这里的xxx指的是网卡的名字,可以使用ip sddr命令查看所有网卡的名字。

如果Linux上有多个网卡,而只想重启某一个网卡的话,可以使用这个命令:

ifdown ens33; ifup ens33

ifdown 即停掉网卡,ifup即启动网卡。有一点要提醒的是,如果我们远程登录服务器,当使用ifdown ens33这个命令的时候,很有可能后面的命令ifup ens33不会被运行,这样导致我们断网而无法连接服务器,所以请尽量使用 service network restart 这个命令来重启网卡。

2. 给一个网卡设定多个IP

在linux系统中,网卡是可以设定多重IP的。

cd /etc/sysconfig/network-scripts/




然后编辑ifcfg-ens33:1 这个配置文件,内容如下,一定要注意 DEVICE 这里要写成 “ens33:1”

其实就是改一下NAME,DEVICE,IPADDR,设置完毕重启网卡,如下所示:





之后再查看网卡ip:



可以看到多了一个ip.

3. 查看网卡连接状态



只要看到 “link ok” 就说明网卡为连接状态,如果显示 “no link” 说明网卡坏掉了或者没有连接网线。

4. 更改主机名

https://jingyan.baidu.com/article/574c52192a1d8d6c8d9dc1ce.html

当装完系统后,默认主机名为localhost,使用hostname就可以知道所用的linux的主机名是什么:

[root@localhost ~]# hostname
localhost.localdomain

同样使用hostname可以更改主机名:

[root@localhost ~]# hostname nan
[root@localhost ~]# hostname
nan




下次登录时就会把命令提示符 [root@localhost ~] 中的 localhost 更改成 nan 不过这样修改只是保存在内存中,下次重启还会变成未改之前的主机名,所以还要去更改相关的配置文件 “etc/sysconfig/network”

[root@localhost ~]# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=nan.localdomain

hostnamectl set-hostname XXX 这种方法会自动更改文件内容

5. 设置DNS

DNS是用来解析域名用的,平时我们访问网站都是直接输入一个网址,而dns把这个网址解析到一个IP。关于dns的概念,如果很陌生的话,那就去网上查一下吧。在linux下面设置dns非常简单,只要把dns地址写到一个配置文件中即可。这个配置文件就是/etc/resolv.conf



resolv.conf有它固有的格式,一定要写成 “nameserver IP” 的格式,上面那行以 ‘;’ 为开头的行是一行注释,没有实际意义,建议写两个或多个namserver ,默认会用第一个namserver去解析域名,当第一个解析不到时会使用第二个。在linux下面有一个特殊的文件/etc/hosts也能解析域名,不过是需要我们手动在里面添加IP+域名这些内容,它的作用是临时解析某个域名,非常有用。



vim编辑该文件,填加一行192.168.174.1 www.baidu.com 保存后,再ping一下 www.baidu.com 就会到 192.168.174.1 了:



/etc/hosts 的格式很简单,每一行作为一条记录,分成两部分,第一部分是IP,第二部分是域名。关于hosts文件,有几点需要注意:

1)一个IP后面可以跟多个域名,可以是几十个甚至上百个;

2)每行只能有一个IP,也就是说一个域名不能对应多个IP;

3)如果有多行中出现相同的域名(前面IP不一样),会按最前面出现的记录来解析。

(hosts解析是先解析的优先级高, 127.0.0.1是个特例,这个代表本地的IP的优先级高。 以先出现的记录为主, 这个文件也是从上到下依次执行的,一旦匹配到一个域名就直接解析了,即使后面再出现这域名也不生效了。 )




10.12 firewalld和netfilter

selinux临时关闭 setenforce 0
selinux永久关闭 vi /etc/selinux/config //SELINUX=enforcing 改成SELINUX=disabled

getenforce //查看状态

centos7之前使用netfilter防火墙
centos7开始使用firewalld防火墙
关闭firewalld开启netfilter方法

systemctl disable firewalled //不让开机启动
systemctl stop firewalld //关闭服务

yum install -y iptables-services
systemctl enable iptables
systemctl start iptables

iptables -nvL

10.13 netfilter5表5链介绍

netfilter的5个表
filter表用于过滤包,最常用的表,有INPUT、FORWARD、OUTPUT三个链
nat表用于网络地址转换,有PREROUTING、OUTPUT、POSTROUTING三个链
managle表用于给数据包做标记,几乎用不到
raw表可以实现不追踪某些数据包,基本从来不用
security表在centos6中并没有,用于强制访问控制(MAC)的网络规则,阿铭没用过
参考文章 http://www.cnblogs.com/metoy/p/4320813.html

数据包流向与netfilter的5个链
PREROUTING:数据包进入路由表之前
INPUT:通过路由表后目的地为本机
FORWARD:通过路由表后,目的地不为本机
OUTPUT:由本机产生,向外发出
POSTROUTING:发送到网卡接口之前



10.14 iptables语法

查看iptables规则:iptables -nvL
iptables -F 清空规则
service iptables save 保存规则
iptables -t nat //-t指定表
iptables -Z 可以把计数器清零
iptables -A INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP

iptables -I INPUT -p tcp --dport 80 -j DROP
iptables -I/-A/-D INPUT -s 1.1.1.1 -j DROP
iptables -I INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT //指定行为
iptables -nvL --line-numbers //显示规则对应的数字,根据编号删除规则更方便
iptables -D INPUT 1
iptables -P INPUT DROP //一旦执行,就断开了,保持默认即可 P:默认策略policy

Iptables是linux上特有的防火墙机制,其功能非常强大,然而在日常的管理工作中仅仅用到了一两个应用,这并不代表iptables不重要。作为一个网络管理员,iptables是必要要熟练掌握的。但是作为系统管理员,我们也应该会最基本的iptables操作,认识iptables的基本规则。

CentOS上默认是设有iptables规则的,这个规则虽然很安全,但是对于我们来说没有用,反而会造成某些影响,所以建议先清除规则,然后把清除后的规则保存一下:



-nvL 就是查看规则, -F 是把当前规则清除,但这个只是临时的,重启系统或者重启 iptalbes 服务后还会加载已经保存的规则,所以需要使用 /etc/init.d/iptables save 保存一下规则(service iptables save),通过上边的命令输出我们也可以看到,防火墙规则保存在了/etc/sysconfig/iptables 可以查看一下这个文件。重启服务可以加载回来service iptables restart

1)iptalbes的三个表

filter 这个表主要用于过滤包的,是系统预设的表,这个表用的最多的。内建三个链INPUT、OUTPUT以及FORWARD。INPUT作用于进入本机的包;OUTPUT作用于本机送出的包;FORWARD作用于那些跟本机无关的包。

nat 主要用处是网络地址转换,也有三个链。PREROUTING 链的作用是在包刚刚到达防火墙时改变它的目的地址,如果需要的话。OUTPUT链改变本地产生的包的目的地址。POSTROUTING链在包就要离开防火墙之前改变其源地址。该表用的不多,但有时候会用到。

mangle 这个表主要是用于给数据包打标记,然后根据标记去操作哪些包。这个表几乎不怎么用。除非想成为一个高级网络工程师,否则就没有必要花费很多心思在它上面。

2)iptables 基本语法

A. 查看规则以及清除规则

[root@localhost ~]# iptables -t nat -nvL

-t 后面跟表名,-nvL 即查看该表的规则,其中-n表示不针对IP反解析主机名;-L表示列出的意思;而-v表示列出的信息更加详细。如果不加-t ,则打印filter表的相关信息:

[root@localhost ~]# iptables -nvL

这个和-t filter 打印的信息是一样的。

关于清除规则的命令中,用的最多就是:

[root@localhost ~]# iptables -F
[root@localhost ~]# iptables -Z

不加-t默认是针对表filter来操作的,-F 表示把所有规则全部删除;-Z表示把包以及流量计数器置零(这个很有用)。

B. 增加/删除一条规则

# iptables -A INPUT -s 10.72.11.12 -p tcp --sport 1234 -d 10.72.137.159 --dport 80 -j DROP

这就是增加了一条规则,省略-t所以针对的是filter表。-A 表示增加一条规则,另外还有-I 表示插入一条规则,-D删除一条规则;后面的INPUT即链名称,还可以是OUTPUT或者FORWORD;-s 后跟源地址;-p 协议(tcp, udp, icmp); --sport/--dport 后跟源端口/目标端口;-d 后跟目的IP(主要针对内网或者外网);-j 后跟动作(DROP即把包丢掉,REJECT即包拒绝;ACCEPT即允许包)。下面再举几个例子以便理解:

[root@localhost ~]# iptables -I INPUT -s 1.1.1.1 -j DROP

上例表示:插入一条规则,把来自1.1.1.1的所有数据包丢掉。

[root@localhost ~]# iptables -D INPUT -s 1.1.1.1 -j DROP

删除刚刚插入的规则。注意要删除一条规则时,必须和插入的规则一致,也就是说,两条iptables命令,除了-I 和-D不一样外,其他地方都一样。

[root@localhost ~]# iptables -I INPUT -s 2.2.2.2 -p tcp --dport 80 -j DROP

上例表示把来自2.2.2.2 并且是tcp协议到本机的80端口的数据包丢掉。这里要说的是,--dport/--sport 必须要和-p选项一起使用,否则会出错。

[root@localhost ~]# iptables -I OUTPUT -p tcp --dport 22 -d 10.0.1.14 -j DROP

这条规则表示,把发送到10.0.2.34的22端口的数据包丢掉。

至于FORWORD链的应用几乎很少用,所以不再举例。再总结一下各个选项的作用:

-A/-D :增加删除一条规则;

-I :插入一条规则,其实跟-A的效果一样;

-p :指定协议,可以是tcp,udp或者icmp;

--dport :跟-p一起使用,指定目标端口;

--sport :跟-p一起使用,指定源端口;

-s :指定源IP(可以是一个ip段);

-d :指定目的IP(可以是一个ip段);

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

-i :指定网卡(不常用,但有时候能用到);

[root@localhost ~]# iptables -A INPUT -s 192.168.1.0/24 -i ens33 -j ACCEPT
[root@localhost ~]# iptables -nvL |grep '192.168.1.0/24'
0     0 ACCEPT     all  --  ens33   *       192.168.1.0/24       0.0.0.0/0

上例中表示,把来自192.168.1.0/24这个网段的并且作用在ens33上的包放行。有时候服务器上iptables过多了,想删除某一条规则时,又不容易掌握当时创建时的规则。其实有一种比较简单的方法:

[root@localhost ~]# iptables -nvL --line-numbers
Chain INPUT (policy ACCEPT 133 packets, 9740 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 ACCEPT     all  --  ens33   *       192.168.1.0/24       0.0.0.0/0

删除某一条规则使用如下命令:

[root@localhost ~]# iptables -D INPUT 1

-D 后跟链名,然后是规则num,这个num就是查看iptables规则时第一列的值。再次查看刚才的规则,已经没有了:

[root@localhost ~]# iptables -nvL --line-numbers




iptables还有一个选项经常用到,-P(大写)选项,表示预设策略。用法如下:

[root@localhost ~]# iptables -P INPUT DROP

-P后面跟链名,策略内容或者为DROP或者为ACCEPT,默认是ACCEPT。注意:如果在连接远程服务器,千万不要随便敲这个命令,因为一旦敲完回车就会断掉。



(进本机的包,通常情况下目标地址就是本机的ip。 但如果你这台机器做的角色是一台路由器,那目标地址就是其他机器,跟本机没有关系了。)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐