Linux流量转发工具与Iptables手动实现流量转发详解

背景

公司做境外电商业务,连接远程桌面太操作卡顿,于是申请了香港专线服务器做流量转发,提高远程桌面流畅度。

可用工具

极光面板

这是一个多服务器端口租用管理面板,你可以添加多台服务器及端口,并将其分配给任意注册用户,租户则可以很方便地使用被分配的端口来完成各种操作

项目地址:极光面板 Github
优势: 直接通过面板即可配置转发规则,而且支持多种协议,但是没有对外提供接口

traffic_forward

这是一个用 Rust 开发的工具,实现用一条命令,完成所有 iptables 所需的流量转发命令,提供了控制台和 Wep Api 两种方式来操作转发配置。

注意:转发主机,必须打开转发
项目地址:github.com/bigbug-gg/traffic_forwa...

优势:提供了 Web Api,有开发能力的小伙伴,可以把转发的功能,做到自己的系统,但需要懂点 Linux

用例

192.168.17.131:9988 转发到 193.23.11.3:3333

# 添加转发规
sudo traffic_forward add 193.23.11.3:3333 9988

# 上面命令会执行相应的 iptables 命令, 192.168.17.131 为转发主机 IP,工具自动获取
iptables -t nat -I PREROUTING -p tcp --dport 9988 -j DNAT --to-destination 193.23.11.3:3333
iptables -t nat -I POSTROUTING -d 193.23.11.3 -p tcp --dport 3333 -j SNAT --to-source 192.168.17.131
iptables -t filter -I FORWARD -d 193.23.11.3 -p tcp --dport 3333
iptables -t filter -I FORWARD -s 193.23.11.3 -p tcp --dport 3333
iptables -t nat -I PREROUTING -p udp --dport 9988 -j DNAT --to-destination 193.23.11.3:3333
iptables -t nat -I POSTROUTING -d 193.23.11.3 -p udp --dport 3333 -j SNAT --to-source 192.168.17.131
iptables -t filter -I FORWARD -d 193.23.11.3 -p udp --dport 3333
iptables -t filter -I FORWARD -s 193.23.11.3 -p udp --dport 3333

手动 iptables 配置指南

学习资料

了解 iptables 后,下面的具体实现才能看懂。

iptables 详解系列文章 【感谢 朱双印大佬 的系列文章】

思路

使用 iptables 的 PREROUTING 和 POSTROUTING 链 即可完成需求

上机操作

1. 第一步

中转主机提供一个端口,这里以 8083 为例,作为访问入口,把接收到的数据,转发给目标远程桌面IP:

sudo iptables -t nat -I PREROUTING -p tcp --dport 8083 -j DNAT --to-destination 远程桌面IP:端口 -m comment --comment "这里加备注"

可以看到,这里用了 -p tcp 指明了使用 tcp 协议,当也需要 udp 时,用 -p udp 即可:

sudo iptables -t udp -I PREROUTING -p tcp --dport 8083 -j DNAT --to-destination 远程桌面IP:端口 -m comment --comment "这里加备注"

这样,数据就中转出去了。

2. 第二步

目标远程桌面返回了数据,要回传回去

sudo iptables -t nat -A POSTROUTING -d 远程桌面IP -p tcp --dport 远程桌面端口 -j SNAT --to-source 中转主机IP -m comment --comment "这里加备注"

同样,再增加一个 udp 协议:

sudo iptables -t nat -A POSTROUTING -d 远程桌面IP -p udp --dport 远程桌面端口 -j SNAT --to-source 中转主机IP -m comment --comment "这里加备注"

如此,没问题的话,已经可以正常通过 中转主机 访问远程桌面。

3.第三步

如果需要记录中转过程中,使用了多少上、下行流量,用 FORWARD 链即可达到目的:

上行流量:

sudo iptables -t filter -A FORWARD -d 远程桌面IP -p udp --dport 远程桌面端口  -j ACCEPT -m comment --comment "备注些这里:上行流量"

下行流量:

sudo iptables -t filter -A FORWARD -s 远程桌面IP  -j ACCEPT -m comment --comment "下行流量"

可以看到,下行命令的除了 改变了-d-s,还去掉了协议和端口,这表达只要是这个IP(指的是远程桌面)的访问,就记录。

以上就是具体实现方式,有些复杂,需掌握许多前置知识,才能驾驭好 iptables,还好,要是嫌麻烦,就直接使用工具。

本作品采用《CC 协议》,转载必须注明作者和本文链接
天高地迥,觉宇宙之无穷;兴尽悲来,识盈虚之有数。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
41
粉丝
14
喜欢
78
收藏
68
排名:287
访问:3.3 万
私信
所有博文
社区赞助商