时间: 2020-09-4|tag:22次围观|0 条评论

在本文中,我们将引导您在Linux中使用iptables进行端口转发。首先,您需要检查服务器上是否启用了端口转发。为了更好地理解,我们将使用eth0作为参考接口,本文中所有命令执行都将与eth0相关。

使用linux的iptables配置端口转发插图
image.png

如何检查Linux中是否启用了端口转发

您可以使用sysctl来检查是否启用了转发。使用以下命令检查

#  sysctl -a |grep -i eth0.forwardingnet.ipv4.conf.eth0.forwarding = 0net.ipv6.conf.eth0.forwarding = 0# cat /proc/sys/net/ipv4/conf/eth0/forwarding0# cat /proc/sys/net/ipv6/conf/eth0/forwarding0

由于两个值均为零,因此在接口eth0上为ipv4和ipv6禁用了端口转发。

使用linux的iptables配置端口转发插图1
image.png

使用sysctl命令在Linux中启用端口转发

# echo "net.ipv4.conf.eth0.forwarding = 1">>/etc/sysctl.conf# echo "net.ipv6.conf.eth0.forwarding = 1">>/etc/sysctl.conf# sysctl -pnet.ipv4.conf.eth0.forwarding = 1net.ipv6.conf.eth0.forwarding = 1

现在,我们在服务器上启用了端口转发,我们可以继续使用iptables配置端口转发规则。

参考资料

如何在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 -vChain 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

文章转载于:https://www.jianshu.com/p/21022613ab5f

原著是一个有趣的人,若有侵权,请通知删除

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自起风了,原文地址《使用linux的iptables配置端口转发
   

还没有人抢沙发呢~