netfilter
iptables
上面2种称呼都可以表示Linux防火墙
规则链
规则的作用:对数据包进行过滤或处理
链的作用:容纳各种防火墙规则
链的分类依据:处理包的不同时机
默认包括5中规则链
iptables的表、链结构 2
表的作用:容纳各种规则链
表的划分依据: 防火墙规则的作用相似
默认包括4个规则表
默认的表、链结构示意图
规则表之间的顺序
规则链之间的顺序
规则链内的匹配顺序
数据包过滤的匹配流程
iptables安装
iptables开机启动
语法构成
iptbales -t filter -I INPUT -p icmp -j REJECT
注意事项
数据包的常用控制类型
iptables -t filter -A INPUT -p tcp -j ACCEPT
iptables -I INPUT -p udp -j ACCEPT
iptables -I INPUT -p icmp -j ACCEPT
iptables -F
iptables -t nat -F
iptables -t mangles -F
iptables -t raw -F
设置默认的策略
iptables -t filter -P FORWARD DROP
iptables -P OUTPUT ACCEPT
通用匹配
隐含匹配
要求以特定的协议匹配作为前提
包括端口、TCP标记、ICMP类型条件
显式匹配
规则的匹配条件
常见的通用匹配条件
iptables -I INPUT -p icmp -j DROP
iptables -A FORWARD! -p icmp -j ACCEPT
iptables -A FORWARD -s 192.168.1.11 -j REJECT
iptables -I INPUT -s 10.20.30.0/24 -j DROP
规则的匹配条件
常用的隐含的匹配条件
端口匹配: --sport 源端口、–dport 目的端口
ICMP 类型匹配: --ICMP-type icmp 类型
iptables -A RORWARD -s 192.168.2.0/24 -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT
常用的显式匹配条件
多端口匹配:-m multiport --sports 源端口列表
-m multiport --dports 目的端口列表
ip范围匹配 : -m iprange --src-range IP范围
MAC地址匹配: -m mac --mac-source MAC 地址
状态匹配: -m state --state 连接状态
iptables -A INPUT -p tcp -m multiport -dport 25.80.110.143 -j ACCEPT
iptables -A FORWARD -p tcp -m iprange --src-range 192.168.4.21-192.168.4.28 -j ACCEPT
iptables -A INPUT -m mac --mac-source 00:29:c0:55:3f -j DROP
centos 7.6 三台
(1)配置双网卡
网卡也是作为内网客户机和外网服务的网关,路由选择功能。
内网卡ens33配置:192.168.100.1 /24
外网口ens36配置:12.0.0.1 /24
[root@localhost /]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
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
UUID=7a93d8ed-42b5-46aa-94a4-a5d49d46712a
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.100.1
NETMASK=255.255.255.0
wq
[root@localhost /]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp -p ifcfg-ens33 ifcfg-ens36
[root@localhost network-scripts]# vim ifcfg-ens36
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=ens36
DEVICE=ens36
ONBOOT=yes
IPADDR=12.0.0.1
NETMASK=255.255.255.0
wq
[root@localhost /]# systemctl start network //重启网卡
[root@localhost network-scripts]# vim /etc/sysctl.conf //设置路由转发功能
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv4.ip_forward=1 //添加路由转发的功能
[root@localhost network-scripts]# sysctl -p //直接设置启动生效
net.ipv4.ip_forward = 1
[root@localhost network-scripts]#
(2)清空防火墙规则和nat规则
[root@localhost network-scripts]# iptables -F //清空防火墙规则
[root@localhost network-scripts]# iptables -t nat -F //清空防火墙nat规则
[root@localhost network-scripts]# iptables -t nat -L //查看防火墙nat规则
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
[root@localhost network-scripts]#
(3)设置SNAT防火墙规则
设置SNAT
客户端访问外网服务端时,通过网关防火墙设置SNAT配置之后,就会内网ip地址转换为外网ip地址。
yum -y install iptables-service
systemctl restart iptables-service
systemctl enable iptables-service
[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.100.100 -o ens36 -j SNAT --to-source 12.0.0.1
(4)设置DNAT防火墙规则
设置DNAT
将外网的IP地址和内网的IP地址做端口映射。
[root@localhost ~]# iptables -t nat -I PREROUTING -d 12.0.0.1 -i ens36 -p tcp --dport 80 -j DNAT --to-destination 192.168.100.100
[root@localhost ~]# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- anywhere localhost.localdomain tcp dpt:http to:192.168.100.100
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT all -- 192.168.100.100 anywhere to:12.0.0.1
[root@localhost ~]#
[root@localhost ~]# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- anywhere localhost.localdomain tcp dpt:http to:192.168.100.100
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT all -- 192.168.100.100 anywhere to:12.0.0.1
(1)httpd的日志文件 显示查看到内网地址192.168.100.100
(2)yum -y install httpd //安装Apache服务,如果没有现网可以搭建本地源
(3)systemctl restart httpd //开启Apache服务
(4)cd /var/log/httpd/access_log
iptables -F //清空防火墙规则
iptables -t nat -F //清空防火墙nat规则
iptables -t nat -L //查看防火墙nat规则
防火墙的服务器的配置策略之后
外网访问内网地址转换
查看客户端的Apache的日志文件
cat /var/log/httpd/access_log
(1)客户端与网关防火墙服务端VM《8》的双网卡互通。
iptables -F //清空防火墙规则
iptables -t nat -F //清空防火墙nat规则
iptables -t nat -L //查看防火墙nat规则
(3)访问外网Apache
查看外网Apache的日志文件,内网地址192.168.100.100成功转换为外网地址12.0.0.1