在本文中,我们将引导您在Linux中使用iptables进行端口转发。首先,您需要检查服务器上是否启用了端口转发。为了更好地理解,我们将使用eth0作为参考接口,本文中所有命令执行都将与eth0相关。
如何检查Linux中是否启用了端口转发
您可以使用sysctl来检查是否启用了转发。使用以下命令检查
# sysctl -a |grep -i eth0.forwarding
net.ipv4.conf.eth0.forwarding = 0
net.ipv6.conf.eth0.forwarding = 0
# cat /proc/sys/net/ipv4/conf/eth0/forwarding
0
# cat /proc/sys/net/ipv6/conf/eth0/forwarding
0
由于两个值均为零,因此在接口eth0上为ipv4和ipv6禁用了端口转发。
使用sysctl命令在Linux中启用端口转发
# echo "net.ipv4.conf.eth0.forwarding = 1">>/etc/sysctl.conf
# echo "net.ipv6.conf.eth0.forwarding = 1">>/etc/sysctl.conf
# sysctl -p
net.ipv4.conf.eth0.forwarding = 1
net.ipv6.conf.eth0.forwarding = 1
现在,我们在服务器上启用了端口转发,我们可以继续使用iptables配置端口转发规则。
参考资料
- 本文最新版本地址
- 本文涉及的python测试开发库 谢谢点赞!
- 本文相关海量书籍下载
- python工具书籍下载-持续更新
- https://kerneltalks.com/networking/how-to-forward-port-using-iptables-in-linux/
如何在Linux中转发端口
在这里,我们将端口80转发到172.31.40.29上的端口8080。不要将端口转发与端口重定向混淆。
我们需要在具有DNAT目标的iptables的PREROUTING链中插入一个条目。命令将如下
# iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j DNAT --to 172.31.40.29:8080
# iptables -A FORWARD -p tcp -d 172.31.40.29 --dport 8080 -j ACCEPT
根据您的要求更改接口,IP和端口。第一个命令告诉将进入端口80的数据包重定向到IP 172.31.40.29端口8080。
现在已应用规则。您需要验证它们。
如何检查端口转发iptables规则
# iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 REDIRECT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 redir ports 8080
..............
此处的REDIRECT目标是指其重定向规则。由于我们已经配置了转发规则,因此我们将目标视为DNAT
如何保存iptables规则
要保存iptables规则并使它们在重新启动后持续存在,请使用以下命令
# iptables-save