linux 学习笔记-031-日常运维-linux 网络相关,linux 防火墙 netfilter,iptables 的 5 表 5 链,iptables 语法介绍

发布于 2018-01-30  284 次阅读


linux 网络相关知识

ifconfig 查看网卡 IP(Centos7 需要安装 net-toos 包)

Centos7 默认使用 ip addr,之前的版本默认使用 ip addr

ifconfig -a:不显示没有 IP 的网卡信息

ifconfig:无论网卡有没有 IP,都会显示

[root@am-01:~#] ifconfig

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

        inet 172.17.1.240  netmask 255.255.255.0  broadcast 172.17.1.255

        inet6 fe80::20c:29ff:fe08:ac45  prefixlen 64  scopeid 0x20<link>

        ether 00:0c:29:08:ac:45  txqueuelen 1000  (Ethernet)

        RX packets 4465648  bytes 369426402 (352.3 MiB)

        RX errors 0  dropped 6877  overruns 0  frame 0

        TX packets 111745  bytes 27925777 (26.6 MiB)

        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 0  (Local Loopback)

        RX packets 0  bytes 0 (0.0 B)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 0  bytes 0 (0.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ifup 网卡名称/ifdown 网卡名称:启用和停止网卡,一般用于重启指定网卡

可以这样用:ifdown eno16777736 && ifup eno16777736

linux 学习笔记-031-日常运维-linux 网络相关,linux 防火墙 netfilter,iptables 的 5 表 5 链,iptables 语法介绍

linux 学习笔记-031-日常运维-linux 网络相关,linux 防火墙 netfilter,iptables 的 5 表 5 链,iptables 语法介绍

设置虚拟网卡,加反斜杠\是为了脱义冒号

[root@am-01:~#] cd /etc/sysconfig/network-scripts/

[root@am-01:/etc/sysconfig/network-scripts#] ls

ifcfg-eno16777736  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@am-01:/etc/sysconfig/network-scripts#] cp ifcfg-eno16777736 ifcfg-eno16777736\:0

[root@am-01:/etc/sysconfig/network-scripts#] vim ifcfg-eno16777736:0

NAME=eno16777736:0

IPADDR=172.17.1.241

# 主要修改 NAME 和 IPADDR 两项,网关和 DNS 可以删除

[root@am-01:/etc/sysconfig/network-scripts#] ifdown eno16777736 && ifup eno16777736

[root@am-01:/etc/sysconfig/network-scripts#] ifconfig

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

        inet 172.17.1.240  netmask 255.255.255.0  broadcast 172.17.1.255

        inet6 fe80::20c:29ff:fe08:ac45  prefixlen 64  scopeid 0x20<link>

        ether 00:0c:29:08:ac:45  txqueuelen 1000  (Ethernet)

        RX packets 4475849  bytes 370170364 (353.0 MiB)

        RX errors 0  dropped 6877  overruns 0  frame 0

        TX packets 112120  bytes 27983957 (26.6 MiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0



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

        inet 172.17.1.241  netmask 255.255.255.0  broadcast 172.17.1.255

        ether 00:0c:29:08:ac:45  txqueuelen 1000  (Ethernet)



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 0  (Local Loopback)

        RX packets 0  bytes 0 (0.0 B)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 0  bytes 0 (0.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

查看网卡是否连接 mii-tool 和 ethtool

[root@am-01:~#] mii-tool eno16777736

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

[root@am-01:~#] ethtool eno16777736

Settings for eno16777736:

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

Centos7 修改主机名,DNS 配置文件,host 文件

主机名配置文件:/etc/hostname

DNS 配置文件:/etc/resolv.conf,可在网卡配置文件定义 DNS

HOST 配置文件:/etc/hosts,用来指定 IP 和域名的对应关系,支持一个 IP 配多个域名,从上到下依次执行,只在本机生效

[root@am-01:~#] hostnamectl set-hostname am-001

[root@am-01:~#] bash

[root@am-001 ~]# exit

[root@am-01:~#] cat /etc/hostname

am-01

[root@am-01:~#] cat /etc/resolv.conf

# Generated by NetworkManager

nameserver 172.17.1.1

nameserver 114.114.114.114

[root@am-01:~#] cat /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

firewalld 和 iptables

SELINUX:一般把它关闭

临时关闭:

[root@am-01:~#] getenforce

Enforcing

[root@am-01:~#] setenforce 0

[root@am-01:~#] getenforce

Permissive

永久关闭:

[root@am-01:~#] vim /etc/selinux/config

SELINUX=disabled

[root@am-01:~#] source /etc/selinux/config

Centos7 默认使用 firewalld,之前的版本默认使用 iptables

关闭 firewalld,开启 iptables

[root@am-01:~#] systemctl stop firewalld.service

[root@am-01:~#] systemctl disable firewalld.service

rm '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service'

rm '/etc/systemd/system/basic.target.wants/firewalld.service'

[root@am-01:~#] yum -y install iptables-services.x86_64

已加载插件:fastestmirror

Loading mirror speeds from cached hostfile

 * epel: mirrors.sohu.com

正在解决依赖关系

--> 正在检查事务

---> 软件包 iptables-services.x86_64.0.1.4.21-18.2.el7_4 将被 安装

--> 正在处理依赖关系 iptables = 1.4.21-18.2.el7_4,它被软件包 iptables-services-1.4.21-18.2.el7_4.x86_64 需要

--> 正在检查事务

---> 软件包 iptables.x86_64.0.1.4.21-13.el7 将被 升级

---> 软件包 iptables.x86_64.0.1.4.21-18.2.el7_4 将被 更新

--> 解决依赖关系完成

………………省略部分输出信息………………

已安装:

  iptables-services.x86_64 0:1.4.21-18.2.el7_4                                                      



作为依赖被升级:

  iptables.x86_64 0:1.4.21-18.2.el7_4                                                               



完毕!

[root@am-01:~#] systemctl enable iptables.service

ln -s '/usr/lib/systemd/system/iptables.service' '/etc/systemd/system/basic.target.wants/iptables.service'

[root@am-01:~#] systemctl start iptables.service

iptables 的五表五链

五个表:filter,nat,mangle,raw,security(Centos7 之前没有这个表)

五个链:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING

表详解:

filter 表用于过滤包,最常用的表,有 INPUT、FORWARD、OUTPUT 三个链

nat 表用于网络地址转换,有 PREROUTING、OUTPUT、POSTROUTING 三个链

managle 表用于给数据包做标记,几乎用不到

raw 表可以实现不追踪某些数据包

security 表在 centos6 中并没有,用于强制访问控制(MAC)的网络规则

链详解:

PREROUTING:数据包进入路由表之前

INPUT:通过路由表后目的地为本机

FORWARD:通过路由表后,目的地不为本机

OUTPUT:由本机产生,向外发出

POSTROUTING:发送到网卡接口之前

iptables 传输数据包的过程:

① 当一个数据包进入网卡时,它首先进入 PREROUTING 链,内核根据数据包目的 IP 判断是否需要转送出去。

② 如果数据包就是进入本机的,它就会沿着图向下移动,到达 INPUT 链。数据包到了 INPUT 链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会经过 OUTPUT 链,然后到达 POSTROUTING 链输出。

③ 如果数据包是要转发出去的,且内核允许转发,数据包就会如图所示向右移动,经过 FORWARD 链,然后到达 POSTROUTING 链输出。

linux 学习笔记-031-日常运维-linux 网络相关,linux 防火墙 netfilter,iptables 的 5 表 5 链,iptables 语法介绍

参考链接:

http://www.cnblogs.com/metoy/p/4320813.html

http://www.zsythink.net/archives/1199

iptables 语法

查看 iptables 规则:iptables -nvL

规则保存位置:/etc/sysconfig/iptables

iptables 默认对 filter 表进行操作,加-t 可以指定要操作的表,如 iptables -t nat

规则匹配顺序:从上到下匹配

清空计数器:iptables -Z,计数器是指 iptables -nvL 命令列出的表中的第一和第二列数字

linux 学习笔记-031-日常运维-linux 网络相关,linux 防火墙 netfilter,iptables 的 5 表 5 链,iptables 语法介绍

清空规则:并不会删除配置文件里面的规则

把规则保存到配置文件:service iptables save

[root@am-01:~#] iptables -F

[root@am-01:~#] iptables -nvL

Chain INPUT (policy ACCEPT 27 packets, 1960 bytes)

 pkts bytes target     prot opt in     out     source               destination         



Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination         



Chain OUTPUT (policy ACCEPT 14 packets, 1368 bytes)

 pkts bytes target     prot opt in     out     source               destination  

例子:

针对默认的表 filter 表的 INPUT 链,增加来源 IP,协议为 TCP,来源端口为 1234 端口,目标 IP,目标端口 80 的数据直接丢弃

iptables -A INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP

-A:在 filter 表最后增加规则(后面紧跟着链名),-s:指定源 IP,-p:指定针对的协议,--sport:指定源端口,-d:指定目的 IP,--dport:指定目的端口,-j:指定操作

DROP:直接将数据丢弃,不返回信息

REJECT:丢弃数据,返回信息给用户

不指定源 IP 和目的 IP,直接增加规则

iptables -I INPUT -p tcp --dport 80 -j DROP

-I:把规则插入到最前面(后面紧跟着链名)

针对网卡设定规则

iptables -I INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT

-i:指定网卡名称

删除规则

iptables -D INPUT -p tcp --dport 80 -j DROP

-D:删除指定规则,其他不变

针对编号删除规则

iptables -nvL --line-number:--line-number 可以列出规则表中的编号

linux 学习笔记-031-日常运维-linux 网络相关,linux 防火墙 netfilter,iptables 的 5 表 5 链,iptables 语法介绍

iptables -D INPUT 6:找到需要删除的规则的编号之后,用-D 删除

linux 学习笔记-031-日常运维-linux 网络相关,linux 防火墙 netfilter,iptables 的 5 表 5 链,iptables 语法介绍

设置默认策略,一般默认策略均为 ACCEPT

把 OUTPUT 的默认规则设置为 DROP

iptables -P OUTPUT DROP

-P:设置默认规则

扩展

selinux 教程:

http://os.51cto.com/art/201209/355490.htm

selinux pdf 电子书:

http://pan.baidu.com/s/1jGGdExK