iptables 常用配置笔记

虽然 iptables 教程、文档看了好多,但是平时用的很少,遇到需求的时候总是各种 google 或者查看现有机器上面的配置。于是决定将常用的配置在下面写下来,以后会不定期更新的。

1. 端口映射:本地 80 --> 本地 8080

适用场景: tomcat 降权运行,不监听80端口
(当然,如果机器上面运行这 nginx 或者 apache 之类的 http 服务器,用它们来做反向代理也是不错的选择。)

2. 端口映射:本地 222 --> NAT后面的 22

适用场景:本机作为NAT出口,广域网A 到 局域网B的端口映射
环境: 本机(网关):192.168.1.1, 目标机器: 192.168.1.2

一般还会配置一个和 DNAT 对应的 反过来的 SNAT 规则,我们这里因为目标网段就是MASQUERADE的段,所以基本等效于一个SNAT规则了。
(SNAT 或 MASQUERADE 默认不改变源端口号

另外,第二条添加转发的条目,我使用的是 -I 参数,也就是插入在 FORWARD 链其他条目前面。
因为某日发现,libvirtd,也就是 KVM 虚拟机的 NAT 网络默认阻止了所有连接内部网络的包(当然,状态为 RELATED, ESTABLISHED的允许通过,可以通过 iptables -t filter -L 查看)

3. 端口映射:本地 80 --> 其他机器 8080

适用场景:本机作为对外暴露的唯一机器,但是并不作为网关
环境: 本机:1.1.1.1, 目标机器: 2.2.2.2

或者

4. NAT 地址伪装

适用场景:提供 NAT 数据包转发服务
环境: eth0 连接外网,eth1连接内网

5. iptables 多端口匹配(multiport)

非连续端口:

连续端口范围:

6. iptables 限速(hashlimit)

80 端口出站速率限制为 256KB/s (对每个客户端 IP 进行限速)

附:SS 透明代理规则(tcp redirect)

适用场景:流量劫持,常见比如 Sha(delete me)dowsocks 透明代理
环境:ss-redir 监听本地1081端口

发表评论

电子邮件地址不会被公开。 必填项已用*标注