iptables 实现端口转发


共计 962 个字符,预计需要花费 3 分钟才能阅读完成。

除了 SSH 隧道本地转发,其实可以用 iptables 进行端口转发

以下在开启了转发功能和默认接收所有流量的情况下进行,看机器有没有开启转发参考 Linux 开启 ipv4 转发的几种方式

1. 情况一

情况一:接受请求的网卡和转发请求的网卡是一张网卡。

现假设网络情况如下,201 机器上开放了 8080 端口的 web 服务,客户端想要访问,但网络并不通(可以认为是添加了某条路由规则导致不通)。

iptables 实现端口转发

/>

想要访问 203 的 web 服务,这时候应该在 203 机器上配置端口转发,代码如下:

# 进行目的地址转换
iptables -t nat -A PREROUTING -d 172.21.9.203 -p tcp --dport 1080 -j DNAT --to-destination 172.21.9.201:8080

# 进行源地址转换
iptables -t nat -A POSTROUTING -d 172.21.9.201 -p tcp  --dport 8080 -j SNAT --to 172.21.9.203

第一条规则进行目的地址转换,目的是告诉机器,即使访问本机 1080 端口,数据包也不是给自己的,需要将数据包发送到 201 机器的 8080 端口。

如果不配置第二条规则,数据包能被 201 机器接收到,但是它并不知道怎么返回。第二条规则进行源地址转换,将本来源地址 172.20.2.114 修改为 172.21.9.203,这样 201 机器就知道将数据传输给 203 机器,再由 203 机器进行返回给客户端。

2. 情况二

情况二:接受请求的网卡和转发请求的网卡不是一张网卡。

现网络情况如下,基本是一样的网络情况,但是转发的机器有两张网卡。

iptables 实现端口转发

/>

这里和前面的区别就是在源地址转换时,需要填写最终目的机器数据能到达的 ip。

# 进行目的地址转换
iptables -t nat -A PREROUTING -d 192.168.1.200 -p tcp --dport 1080 -j DNAT --to-destination 192.168.5.22:8080

# 进行源地址转换
iptables -t nat -A POSTROUTING -d 192.168.5.22 -p tcp  --dport 8080 -j SNAT --to 192.168.5.3

注意这里的第二条规则,填写的是 192.168.5.3 而不是 192.168.1.200,因为 22 机器也不知道 192.168.1.200 怎么去。

提醒:本文发布于596天前,文中所关联的信息可能已发生改变,请知悉!

Tips:清朝云网络工作室

阅读剩余
THE END