iptables
- iptables有多种功能,每一种功能都用一张表来实现
- 最常用的功能是防火墙和NAT
- 从RHEL7开始,默认的防火墙为firewalld,但是它的底层仍然调用iptables
- 安装iptables服务
- iptables的表和链。我们只关心nat表和filter表。filter表是默认的表,它实现防火墙,也就是包过滤的功能。nat表实现网络地址转换。
防火墙filter表
- 配置iptables时,不指定表,就是使用filter表
- 配置时不指定规则链,则配置所有链
- 可以向规则链中加入很多规则,数据包进入该链时,从上向下匹配,一旦匹配就停止,开始应用规则。如果全都不匹配,则应用默认规则
- 命令选项、链名、目标操作使用大写字母,其他小写
filter中的三条链
- INPUT:数据包的目标地址是自己,则进入INPUT链
- OUTPUT:数据包的源地址是自己,则进入OUTPUT链
- FORWARD:数据包穿过自己,则进入FORWARD链
环境准备
- client1:eth0 -> 192.168.88.10/24 网关:192.168.88.11
- node1:eth0 -> 192.168.88.11/24,eth1 -> 192.168.99.11/24
- server1:eth1 -> 192.168.99.100/24 网关:192.168.99.11
iptables操作
常用选项:
- iptables的语法
- 示例
- 可以设置默认拒绝 然后明确允许
- 也可以设置默认允许 然后明确拒绝
- 此时,从其他机器访问node1已放行相关协议,但是从node1访问其他机器却无法成功。原因是数据可以发出去,但是返回的数据包也会进入INPUT,但是INPUT链中没有相关放行规则。
- 从自身发出去,返回来的数据包属于某个连接,该连接的状态是ESTABLISHED,放行该状态的数据包即可。ESTABLISHED表示已经建立的连接,即数据包是响应一个已经建立的连接而来的。
验证FORWARD链
准备环境
为192.168.88.10和192.168.99.100配置网关
- 在server1上安装http服务
配置FORWARD链
- 要求:在node1上配置防火墙,保护server1
- 默认拒绝所有数据包通过
- 从server1所在网段发往client1所在网段的包全部允许
- 从client1所在网段到server1所在网段,允许icmp,允许22、80、443端口通过
NAT
- NAT:网络地址翻译、网络地址转换
- NAT技术产生,主要是解决IPV4地址不够用。
- NAT一般用于将私有地址转成全球唯一的公有地址。
- 私有地址:
- A类:10.x.x.x
- B类:172.16.x.x-172.31.x.x
- C类:192.168.x.x
- 私有地址,如果需要访问互联网中的公有地址,进行上网,可以通过NAT技术,将私有地址转成公有地址,再访问外界。
配置SNAT
- 现在的实验环境,client1可以访问server1,server1看到的是客户端地址是client1的地址。
- 互联网环境下,运营商不允许私有地址出现在互联网上,发现有这样的数据,就直接丢弃。所以,私有地址发往互联网时,需要用NAT转换成公有地址,也叫合法地址。
- 在我们的练习环境下,在node1上配置NAT,当client1访问server1时,将client1的地址转换成server1的192.168.99.x再发给server1。因为数据包的源地址改变了,所以叫SNAT,S即Source。