一、iptables配型类型分类
通用匹配:
*可直接使用,不依赖于其他条件或扩展;
*包括网络协议、IP地址、网络接口等条件
隐含匹配:
*要求以特定的协议匹配作为前提条件;
*包括端口、TCP标记、ICMP类型等条件
显示匹配:
*要求以“-m 扩展模块”的形式明确指出类型
*包括多端口、MAC地址、IP范围、数据包状态等条件
通用匹配
常见的通用匹配条件:协议匹配 -p 协议名
地址匹配 -s 源地址 -d 目的地址
接口匹配 -i 入站网卡 -o 出站网卡
代码演示:
# iptables -t filter -A FORWARD -s 10.10.10.11 -j REJECT #在filter表的forward链里,拒接源是10.10.10.11的数据包并做出回应 # iptables -t filter -A INPUT -i eth1 -s 10.10.10.0/24 -j DROP #在filter表的INPUT链里,入站网卡是eth1并且网段是10.10.10.0时,直接丢弃
讯享网
隐含匹配:端口匹配 --sport 源端口 --dport 目的端口
icmp类型匹配 --icmp-type icmp 类型
代码演示:
讯享网# iptables -A FORWARD -s 10.10.10.1 -p tcp --dport 80 -j ACCEPT 在filter表的forward链里,源地址是10.10.10.1,协议为tcp协议,端口号为80时,允许通过 # iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT # iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT # iptables -A INPUT -p icmp -j DROP #这三行的作用就是别人不能ping通我,但我能ping通别人
显示匹配:
多端口匹配 -m multiport --sport 源端口列表
-m multiport --dport 目的端口列表
IP范围匹配 -m iprange --src-range ip范围
MAC地址匹配 -m mac --macl-source mac地址
状态匹配 -m state --state 连接状态
代码演示:
# iptables -A INPUT -p tcp -m multiport --dport 80,443,21,22 -j ACCEPT 允许多个端口通过,这也是一种优化方案 # iptables -A FORWARD -p tcp -m iprange --src-range 10.10.10.1-10.10.10.20 -j ACCEPT 允许某个网段通过 # iptables -A INPUT -p tcp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT 当链接状态为新建,已连接,正在通信放行,这在升级或者变配服务器时很重要
二、SANT规则
SNAT策略的典型应用环境:局域网主机共享单个公网IP地址接入Internet。
SNAT策略的原理:*源地址转换 *修改数据包的源地址
启动SNAT代码转换记录:
前提条件:*局域网各主机正确配置IP地址/子网掩码
*局域网各主机正确设置默认网关地址
*Linux网管支持IP路由转发
进行实验:首先准备两台虚拟机,一台为内网主机,一台为路由器,要有两张网卡,并且有一张网卡要能上网
客户端地址为:10.10.10.11 服务器地址内网网卡为10.10.10.13,外网网卡为192.168.2.130。首先将两台虚拟机的防火墙默认规则清空,iptables -F,清空后我们首先设置客户端
客户端的网卡我们要把网关指向服务器的内网网卡
讯享网# echo “GATEWAY=10.10.10.13” >> /etc/sysconfig/network-scripts/ifcfg-eth0 # 将网关写入网卡的配置文件中
服务器端我们需要做的是进行防火墙的配置和开启路由转发,我们的需求是将内网地址出站时变成公网地址,所以根据需求进行防火墙的相应的配置
# iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o ens38 -j SNAT --to-source 192.168.2.130 # 在nat表的POSTROUTING链里,将源地址为10.10.10.0/24的网段且出口地址为ens38的网卡,进行源地址的转换,将地址转换成192.168.2.130(也就是我们服务器的公网地址) # vi /etc/sysctl.conf 写入net.ipv4.ip_forward = 1 #开启路由转发 并刷新系统文件 # sysctl -p
在客户机的网卡内再写入DNS,我们进行域名的访问,查看是否可以正常访问:
讯享网# echo “DNS1=114.114.114.114” >> /etc/sysconfig/network-scripts/ifcfg-eth0 # echo “DNS2=8.8.8.8” >> /etc/sysconfig/network-scripts/ifcfg-eth0 # 我们写入两个DNS服务器地址,一个国内一个国外
在客户端ping百度的域名,发现可以ping通,这就是SNAT地址的转换

在我们日常生活中,可能会有拨号上网或者DHCP自动分配,这就使的我们不能及时的知到外网地址,所以需要配合MASQUERADE——地址伪装
*适用于外网IP地址 非固定情况
*对于ADSL拨号上网,接口通常为ppp0、ppp1
*将SNAT规则改为MASQUERADE即可
实现方法:我们在上面的基础上,直接进行修改即可,将上面的iptables规则删除,新建一条规则
# iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o ens38 -j MASQUERADE # 这个就是利用地址伪装直接进行SNAT的转换
在客户端再进行ping百度的域名,发现能够ping通

三、DNAT规则
DNAT的典型应用环境:在Internet中发布位于企业局域网内的服务器
DNAT策略的原理:*目标地址转换 *修改数据包的目标地址
DNAT转换代码记录
前提条件:*局域网的WEB服务器能够访问INTERNET
*网关的外网IP地址有正确的DNS解析记录
*Linux网关支持IP路由转发
进行DNAT的实现:准备三台机器,第一台内网地址为10.10.10.11,并安装httpd服务,写一个临时性的网页,第二台需要有两张网卡,一个为内网网卡10.10.10.13,一个为外网网卡192.168.2.130,并且要开启路由转发,最后一台机器的网卡为192.168.2.131
内网服务器进行查看httpd服务是否成功开启
讯享网# curl localhost

第二台服务器进行防火墙规则的书写,我们的需求是公网地址访问时我们将公网地址转到内网服务器的地址上,根据需求记性书写,开启路由转发
# iptables -t nat -I PREROUTING -i ens38 -d 192.168.2.130 -p tcp --dport 80 -j DNAT --to-destination 10.10.10.11 在nat表的PREROUTING链里,入网网卡为ens38时,目的地址为192.168.2.130时(这个地址就是本机公网网卡),协议为tcp,目的端口号为80,转换为10.10.10.11的地址
我们在192.168.2.131上进行访问服务器的公网网卡
讯享网curl 192.168.2.130

就会看到,我们能够正常访问内网web服务器的网页内容。
四、centos7使用iptables
常见的iptables相关命令
导出(备份)规则:iptables-save 工具,可结合重定向输出保存到指定文件

导入(还原)规则:iptables-restore工具,可结合重定向输入指定规则来源

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

centos7使用iptables:
# rpm -e --nodeps firewalld # yum -y install iptables-services # systemctl start iptables # systemctl enable iptables
(注:不正之处还请大佬批评指正!)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/74015.html