iptables操作手册
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1iptables与firewalld的关系
RHEL7.0以后,使用firewalld服务取代了iptables服务,但是依然可以使用iptables服务,只是默认不开启了,iptables和firewalld都不是真正的防火墙,它们都只是用来定义防火墙策略的防火墙管理工具,是操作系统上的一种服务,将定义好的规则交给内核中的netfilter(网络过滤器)来读取,从而实现防火墙的功能,firewalld和iptables除了可以可以在inbond和outbond方向做策略限制以外,还能实现snat和dnat功能。
注意:firewalld和iptables同时只能运行一种服务,否则会出现不可预知的情况
2iptables安装
RHEL7.0以后,iptables默认不开启,需要安装iptables服务
安装完成后
3实验场景
3.1源地址转换
需求:
源地址1(172.16.202.15)需要访问公网目的地址(192.168.111.245),源地址2(172.16.202.16)不需要访问公网。
内网两台服务器,分别为源地址1(172.16.202.15)和源地址2(172.16.202.16),公网出口处有一台centos 7.1的双网卡服务器,一个接口接内网(172.16.202.14),一个接口接外网(192.168.111.63)。
源地址1上首先需要保证和iptables服务器能够互通,并且有去往192.168.111.245的路由,路由下一跳需要指向iptables内网接口(172.16.202.14),由iptables服务器做源nat,把源地址(172.16.202.15)nat成公网接口地址(192.168.111.63),从而可以访问目的地址(192.168.111.245)。
一、首先在源地址1服务器上配置去往192.168.111.245的路由
ip route add 192.168.111.245 via 172.16.202.14 //临时添加路由,重启网卡或者系统后,路由会丢失,建议做路由固化路由固化:在/etc/sysconfig/network-scripts目录下,新建一个route配置文件,vi route-eth0,新增一条路由,192.168.111.245/32 via 172.16.202.14,重启网卡即可生效
二、iptables服务器上,配置snat策略
iptables -t nat -A POSTROUTING -s 172.16.202.15/32 -d 192.168.111.245/32 -j SNAT --to 192.168.111.63
注释:
-t table table to manipulate (default: `filter') //
这个选项指定命令要操作的匹配包的表。如果内核被配置为自动加载模块,这时若模块没有加载,系统将尝试为该表加载适合的模块。这些表如下:filter,这是默认的表,包含了内建的链INPUT (处理进入的包)、FORWARD(处理通过的包)和OUTPUT(处理本地生成的包)。
nat //这个表被查询时表示遇到了产生新的连接的包,由三个内建的链构成:PREROUTING (修改到来的包)、OUTPUT(修改路由之前本地的包)、POSTROUTING(修改准备出去的包)。-A chain //在所选择的链末添加规则POSTROUTING //先路由再做nat
-s //源IP地址
-d //目的IP地址
-j SNAT //做源地址转换
--to //转换后的IP地址
此时,从源地址1服务器上去ping 192.168.111.245,结果如下:
提示destination host prohibited,说明路由可达,但是在中间
路径上被防火墙阻止了,源地址1本地服务器上,因为是出接口方向流量,所以默认情况下,不会被阻止,所以只能在iptables服务器上,被防火墙默认规则阻止了,所以只需要在iptables服务器上放开防火墙限制即可
三、iptables服务器上放开防火墙规则
前面提到过,iptables上默认的filter表中,分为三个规则链:INPUT,OUTPUT和FORWARD,其中INPUT负责处理入方向的包,OUTPUT负责处理本地生成出方向的包,FORWARD负责经过经过的数据包,从网络拓扑上可以看出来,源地址1(172.168.202.15)去访问目的地址(192.168.111.245),是经过iptables服务器,所以调用的iptables服务器的FORWARD表,所以只需要在iptables 服务器上FORWARD表中,增加一条规则即可
iptables -I FORWARD -j ACCEPT
如果不确定是调用的哪个规则链,也可以在INPUT和OUTPUT 方向都加上规则链,iptables -I INPUT -j ACCEPT,iptables -I OUTPUT -j ACCEPT
注意:以上二三两个步骤添加的nat规则和防火墙规则,都是临时的,重启iptables服务或重启系统后,nat规则和防火墙规则会丢失,可以使用命令保存:service iptables save,也可以手动修改配置文件,配置文件如下vi /etc/sysconfig/iptables:
四、打开ip_forward
出于安全考虑,Linux系统默认是禁止数据包转发的。所谓转发即当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将包发往本机另一网卡,该网卡根据路由表继续发送数据包,这个功能需要手动打开。
修改配置文件:vi /etc/sysctl.conf,增加一条:net.ipv4.ip_forward = 1
然后输入sysctl –p,使配置生效