Iptables-2·配置FORWARD链
2022-12-16 本文已影响0人
技术老男孩
一、环境准备:
拓扑图.png- 为node1的eth1配置ip地址
[root@node1 ~]# nmcli connection modify eth1 ipv4.method manual ipv4.addresses 192.168.99.11/24
[root@node1 ~]# nmcli connection down eth1
[root@node1 ~]# nmcli connection up eth1
- 配置server1
[root@localhost ~]# hostnamectl set-hostname server1
[root@localhost ~]# nmcli connection modify eth1 ipv4.method manual ipv4.addresses 192.168.99.100/24
[root@localhost ~]# nmcli connection down eth1
[root@localhost ~]# nmcli connection up eth1
[root@localhost ~]# echo a | passwd --stdin root
- 为192.168.88.10和192.168.99.100配置网关
[root@client1 ~]# nmcli connection modify eth0 ipv4.gateway 192.168.88.11
[root@client1 ~]# ifdown eth0; ifup eth0
[root@server1 ~]# nmcli connection modify eth1 ipv4.gateway 192.168.99.11
[root@server1 ~]# ifdown eth1; ifup eth1
- 在中间节点node1上打开路由转发功能
[root@node1 ~]# sysctl -a | grep ip_forward
[root@node1 ~]# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
[root@node1 ~]# sysctl -p
- 相互通信验证配置结果
# client和server已经可以通信
[root@client1 ~]# ping -c2 192.168.99.100
在server1上安装httpd服务
[root@server1 ~]# yum install -y httpd
[root@server1 ~]# systemctl start httpd
# 在客户端访问web服务,可以访问
[root@client1 ~]# curl http://192.168.99.100/
二、配置FORWARD链示例
需求:
在node1上配置防火墙,保护server1默认拒绝所有数据包通过
需求要点:
- 从server1所在网段发往client1所在网段的包全部允许
- 从client1所在网段到server1所在网段
- 允许icmp,允许22、80、443端口通过
实现步骤:
- 从server1所在网段发往client1所在网段的包全部允许
# 设置远程控制点允许通过
[root@node1 ~]# iptables -A INPUT -s 192.168.88.254 -j ACCEPT
# 默认拒绝所有数据包通过
[root@node1 ~]# iptables -P FORWARD DROP
- 从client1所在网段到server1所在网段
# 源地址是192.168.99.0/24,目标地址是192.168.88.0/24的包,放行
[root@node1 ~]# iptables -A FORWARD -s 192.168.99.0/24 -d 192.168.88.0/24 -j ACCEPT
- 允许icmp,允许22、80、443端口通过
# 从client1到server1,允许icmp
[root@node1 ~]# iptables -A FORWARD -s 192.168.88.0/24 -d 192.168.99.0/24 -p icmp -j ACCEPT
# client1和server1已经可以ping通了
[root@client1 ~]# ping -c2 192.168.99.100
# 允许从client1访问server1的22、80、443,100-120端口范围
- 允许icmp,允许22、80、443端口通过(写法二)
# -m是引入扩展模块,multiport多端口
[root@node1 ~]# iptables -A FORWARD -p tcp -m multiport
--dport 22,80,443,100:120 -s 192.168.88.0/24 -j ACCEPT
- 验证结果
# 现在从client1到server1的ssh、http都可以放行了
[root@client1 ~]# ssh 192.168.99.100
[root@client1 ~]# curl http://192.168.99.100/
三、补充:
- -m iprange,可以配置范围ip地址的规则
# 拒绝192.168.88.10-192.168.88.20
访问192.168.99.50-192.168.99.150
# -m是引入扩展模块
# src-range是源地址范围
# dst-range目标地址范围
[root@node1 ~]# iptables -I FORWARD -m iprange
--src-range 192.168.88.10-192.168.88.20
--dst-range 192.168.99.50-192.168.99.150
-j REJECT