Debian iptables 防火墙:默认拒绝、SNAT 与 DNAT 验证
1. 服务介绍
iptables 控制本机输入、输出及跨接口转发;SNAT 让内网访问外网,DNAT 将外网入口转发至内网服务。本文验证 DNS、邮件、Web 和 FTP 的转发规则。
2. 准备运行环境
• 操作系统:Debian 系 Linux 环境,按原实验版本执行。
• 操作账号:root 或具备 sudo 权限的管理员账号。
• 网络要求:主机 IP、DNS、网关和客户端连通性已按实验拓扑准备。
• 软件要求:可使用 apt 安装所需软件包。
• 操作建议:修改服务配置前先备份原配置文件。
3. 配置步骤
1. 准备运行环境
确认系统版本、管理员权限、网络连通性和软件源可用后,再开始安装和修改配置。
2. 相关知识与注意点
• 配置前先确认系统版本、权限、网络连通性和软件包来源。
• 修改服务配置前建议备份原文件,便于出现问题时回退。
• 服务类配置应同时检查配置语法、服务状态、监听端口和日志。
• 命令类文档应通过帮助信息、示例输出和实际执行结果验证。
3. 实验步骤
添加必要的网络地址转换规则,使外部客户端能够访问到内部服务器上的dns、mail、web和ftp服务。
INPUT、OUTPUT和FORWARD链默认拒绝(DROP)所有流量通行。
配置源地址转换允许内部客户端能够访问互联网区域。
先备份 iptables-save,保留控制台;启用 net.ipv4.ip_forward。先放行管理来源,再设置 DROP。DNAT 后 FORWARD 匹配内网地址;OUTPUT DROP 还需要按业务放行 DNS/NTP。FTP 被动端口应与服务端保持一致。203.0.113.10 为文档地址,替换后仅在隔离实验执行。
1. 默认规则修改为 DROP
bash
iptables -P INPUT DROP
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 2021 -j ACCEPT
iptables -A INPUT -p udp -m multiport --dports 67,123,1194 -j ACCEPT
iptables -P FORWARD DROP
iptables -I FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -d 192.168.100.100 -p tcp -m multiport --dports 53,80,443,465,993 -j ACCEPT
iptables -A FORWARD -d 192.168.100.100 -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -p tcp -m multiport --dports 20,21,4500:5000 -j ACCEPT
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
iptables -A FORWARD -s 192.168.100.0/24 -j ACCEPT
iptables -A FORWARD -s 172.16.0.0/24 -j ACCEPT
iptables -P OUTPUT DROP
iptables -I OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 3260 -j ACCEPT
iptables -A OUTPUT -p udp --dport 67 -j ACCEPT
iptables -nL | grep Chain
2. 源地址转换
bash
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ens192 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens192 -j MASQUERADE
iptables -t nat -nvL POSTROUTING
3. DNAT转换
bash
iptables -t nat -A PREROUTING -d 203.0.113.10 -p tcp -m multiport --dports 53,80,443,465,993 -j DNAT --to 192.168.100.100
iptables -t nat -A PREROUTING -d 203.0.113.10 -p tcp -m multiport --dports 20,21,4500:5000 -j DNAT --to 192.168.100.200
iptables -t nat -A PREROUTING -d 203.0.113.10 -p udp -m multiport --dports 53 -j DNAT --to 192.168.100.100
iptables -t nat -nvL PREROUTING
4. 验证结果
按服务类型使用对应命令检查配置是否生效:
bash
sysctl net.ipv4.ip_forward
iptables -nvL --line-numbers
iptables -t nat -nvL
ip route
tcpdump -ni any port 53
如果服务状态正常、端口监听正确,客户端访问或查询结果符合预期,说明配置生效。
验证客户端:curl -I http://203.0.113.10;dig @203.0.113.10 example.com。规则计数增长、内网收到请求且客户端收到回包,才说明转换成功。