【iptables 实战】06 iptables网络防火墙实验

一、现状说明

在上一节中,我们将两个网段的机器,通过中间机器的网络转发,能达到互通。再来回顾一下这个网络连接的图

这一节,我们将通过设置机器B的iptables规则,来做一些防火墙实验

机器A模拟公网的一台服务器,机器C模拟我们内网的一台机器。机器B充当路由器的角色

二、前置条件

2.1 三台机器的firewalld关闭,以免影响实验

bash 复制代码
[root@localhost ~]# systemctl stop firewalld && systemctl disable firewalld

2.2 为了不影响实验效果,我们先把机器B的iptables规则全清空

bash 复制代码
[root@localhost ~]# iptables -F
[root@localhost ~]# iptables -nvL
Chain INPUT (policy ACCEPT 239 packets, 29542 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 6 packets, 504 bytes)
 pkts bytes target     prot opt in     out     source               destination   

2.3 机器A安装httpd

由于开始我们的主机C设置的是一个hostOnly网络,是连不上互联网的,所以我们先连上互联网。把httpd安装上。先把主机A关机。添加一个nat网卡

这里的enp0s3就是nat网卡,通过启用enp0s3,就可以连上外网了

可以用浏览器试着访问百度,发现网络已经通了

安装httpd

bash 复制代码
[root@localhost ~]# yum install httpd
[root@localhost ~]# systemctl restart httpd
[root@localhost ~]# curl -X GET http://localhost

安装好httpd以后,禁用enp0s3的网卡

2.4 启动主机C的网络服务

由于重启了主机,所以重新把C->A的路由再设置一下

bash 复制代码
route add -net 192.168.56.0/24 gw 10.1.0.11

把主机B的iptables先清空,避免存在的规则影响实验

root@localhost \~# iptables -F

清空B的规则后,可以尝试用主机C ping A,可以发现,其实是通的

三、连通性实验

先试一下,A和C,互ping是不是通的,保证网络通畅的前提下,执行下面的操作

3.1 先拒绝所有转发

在主机B中FORWARD链的末端添加一条默认拒绝的规则,然后将"放行规则"设置在这条"默认拒绝规则"之前即可

bash 复制代码
[root@localhost ~]# iptables -A FORWARD -j REJECT

这时候,主机A和主机C已经不能互通了

A->C,ping 不通,A->B 能ping通(因为有交换机直连)

C->A,ping 不通,C->B 能ping通(因为有交换机直连)

3.2 设置主机B转发流量

如果我们想要使内部的主机C能够访问外部主机A(10.1.0.10)的web服务,我们应该怎样做呢?没错,我们需要在FORWARD链中放行内部主机对外部主机的web请求,只需如下配置即可

bash 复制代码
iptables -A FORWARD -j REJECT
iptables -I FORWARD -s 10.1.0.0/16 -p tcp --dport 80 -j ACCEPT
iptables -I FORWARD -s 10.1.0.0/16 -p tcp --dport 22 -j ACCEPT
iptables -I FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

从主机C(10.1.0.10)访问主机A(192.168.56.104)

curl -X GET http://192.168.56.104:80

通了

四、总结

bash 复制代码
#如果想要iptables作为网络防火墙,iptables所在主机开启核心转发功能,以便能够转发报文。
#使用如下命令查看当前主机是否已经开启了核心转发,0表示未开启,1表示已开启
cat /proc/sys/net/ipv4/ip_forward
#使用如下两种方法均可临时开启核心转发,立即生效,但是重启网络配置后会失效。
方法一:echo 1 > /proc/sys/net/ipv4/ip_forward
方法二:sysctl -w net.ipv4.ip_forward=1
#使用如下方法开启核心转发功能,重启网络服务后永久生效。
配置/etc/sysctl.conf文件(centos7中配置/usr/lib/sysctl.d/00-system.conf文件),在配置文件中将 net.ipv4.ip_forward设置为1
 
#由于iptables此时的角色为"网络防火墙",所以需要在filter表中的FORWARD链中设置规则。
#可以使用"白名单机制",先添加一条默认拒绝的规则,然后再为需要放行的报文设置规则。
#配置规则时需要考虑"方向问题",针对请求报文与回应报文,考虑报文的源地址与目标地址,源端口与目标端口等。
#示例为允许网络内主机访问网络外主机的web服务与sshd服务。

iptables -A FORWARD -j REJECT
iptables -I FORWARD -s 10.1.0.0/16 -p tcp --dport 80 -j ACCEPT
iptables -I FORWARD -d 10.1.0.0/16 -p tcp --sport 80 -j ACCEPT
iptables -I FORWARD -s 10.1.0.0/16 -p tcp --dport 22 -j ACCEPT
iptables -I FORWARD -d 10.1.0.0/16 -p tcp --sport 22 -j ACCEPT

#可以使用state扩展模块,对上述规则进行优化,使用如下配置可以省略许多"回应报文放行规则"。

iptables -A FORWARD -j REJECT
iptables -I FORWARD -s 10.1.0.0/16 -p tcp --dport 80 -j ACCEPT
iptables -I FORWARD -s 10.1.0.0/16 -p tcp --dport 22 -j ACCEPT
iptables -I FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
相关推荐
阿米亚波1 小时前
【EVE-NG 实战】防火墙基础(VLAN · VRRP · NAT · ACL · 静态路由)
运维·网络·笔记·网络协议·计算机网络·网络安全·运维开发
零意@1 小时前
海光平台debian11的系统,打开pstore功能和验证功能
网络
blueman88881 小时前
qt5-serialbus详细解析
开发语言·网络·qt
学究天人2 小时前
数学公理体系大全:Comprehensive Collection of Mathematical Axiom Systems(卷6)
网络·算法·数学建模·动态规划·几何学·图论·拓扑学
tiantianuser2 小时前
NVME-oF IP 设计2 :设计之前的调研!
网络·网络协议·rdma·roce v2·nvme of
星恒讯工业路由器2 小时前
工业无线通信选型常见问题解答
网络·信息与通信·无线ap·设备选型·工业无线通信·防爆无线设备·4g/5g路由器
智慧光迅AINOPOL3 小时前
校园全光网建设成本对比:全光网取代传统校园网建设成本分析
网络·全光网解决方案·全光网·校园全光网·校园全光网解决方案
2401_873479403 小时前
如何识别代理IP和伪装流量?用IP情报工具三步穿透住宅代理伪装
网络·数据库·网络协议·tcp/ip·ip
s09071363 小时前
深入解析 Sensor Hub Transport Protocol (SHTP) 协议
网络·协议·传感器·shtp
hey you~3 小时前
400电话选型技术测评:一个开发视角的线路质量评估方案
运维·网络·数据库·400电话·企业通信