iptables 实现端口转发

633次阅读
一条评论

共计 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 怎么去。

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

AD:【腾讯云服务器大降价】2核4G 222元/3年 1核2G 38元/年
正文完
 
阿蛮君
版权声明:本站原创文章,由 阿蛮君 2023-04-23发表,共计962字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(一条评论)
zzh123456 评论达人 LV.1
2023-08-21 21:10:45 回复

感谢感谢

 Windows  Edge  中国河南省濮阳市移动
Copyright © 2022-2024 阿蛮君博客 湘ICP备2023001393号
本网站由 亿信互联 提供云计算服务 | 蓝易云CDN 提供安全防护和加速服务