iptables防火墙NAT配置
1、开启ip转发
临时生效配置:echo 1 >/proc/sys/net/ipv4/ip_forward
永久生效配置:
vim /etc/sysctl.conf
添加或修改net.ipv4.ip_forward = 1
配置生效 sysctl -p
2、源地址转换 snat
源地址转换通常用于实现内网主机通过外网接口访问外部网络,比如家庭或企业网络中的多个设备通过路由器的公网 IP 访问互联网。
示例
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
解释
-t nat:指定使用 nat 表,NAT 相关操作通常在该表中进行。
-A POSTROUTING:在POSTROUTING 链中添加规则,POSTROUTING 链用于在数据包即将离开系统时进行源地址转换。
-s 192.168.1.0/24:指定源地址范围,即内网网段。
-o eth0:指定输出接口,即数据包离开系统时使用的接口。
-j MASQUERADE:使用MASQUERADE 目标,它会自动将源地址转换为该接口的 IP 地址,适用于动态 IP 场景。
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 203.0.113.1
解释
使用的是静态公网 IP 地址,也可以使用 SNAT 目标
3、目的地址转换 dnat
目的地址转换常用于将外部网络的请求转发到内部网络的特定主机,例如将公网的某个端口请求转发到内网服务器的相应端口。
示例
iptables -t nat -A PREROUTING -d 203.0.113.1 -p tcp --dport 22 -j DNAT --to-destination 192.168.1.100:22
解释
-A PREROUTING:在PREROUTING 链中添加规则,PREROUTING 链用于在数据包刚进入系统时进行目的地址转换。
-d 203.0.113.1:指定目的地址,即公网 IP 地址。
-p tcp --dport 22:指定协议为 TCP,目标端口为 22。
-j DNAT --to-destination 192.168.1.100:22:使用 DNAT 目标,将目的地址转换为内网服务器的 IP 地址和端口。
补充:
还需要在内网服务器的 INPUT 链中允许该端口的访问
iptables -A INPUT -p tcp --dport 22 -jACCEPT
补充:端口重定向
REDIRECT参数用于将数据包重定向到本地主机。与DNAT类似,都是改变数据包的目的地址,但REDIRECT更具特定用途。它主要用于在同一台主机上进行端口重定向,通常在实现透明代理等场景中发挥作用。
示例
iptables -t nat -A PREROUTING -p tcp--dport 80 -j REDIRECT --to-ports 8080
-A PREROUTING:在PREROUTING 链中添加规则,PREROUTING 链用于在数据包刚进入系统时进行目的地址转换。
-d 203.0.113.1:指定目的地址,即公网 IP 地址。
-p tcp --dport 80:指定协议为 TCP,目标端口为 80。
-j REDIRECT --to-ports 8080:将本地 80 端口的流量重定向到 8080 端口
这种方式能在不改变数据包源地址的情况下,实现对特定端口流量的本地重定向,为一些特殊的网络服务配置提供了便利 。其他主机在访问80端口时,会重定向到8080端口
本文来自博客园,作者:赛博狗尾草,转载请注明原文链接:https://www.cnblogs.com/gpysir/p/18800355
浙公网安备 33010602011771号