一步实现iptebles实现服务器之间流量转发
流量走向:
客户端 --> GFW --> A服务器 --> B服务器(落地) --> YouTube --> 返回客户端
A服务器IP:2.2.2.2 端口:TCP为20001,UDP为20002
B服务器IP:6.6.6.6 端口:TCP为60001,UDP为60002
实现目的:把本机A服务器IP 2.2.2.2 上的 TCP 端口、UDP端口流量转发到B服务器IP 6.6.6.6 的 TCP 端口、UDP端口上
要实现客户端通过转发服务器 A(IP:2.2.2.2)访问落地服务器 B(IP:6.6.6.6)上的 协议1 和 协议2 服务,您需要在 A 服务器上配置 iptables
规则,将特定端口的流量转发到 B 服务器对应的端口。
步骤如下:
- 启用 IP 转发:在 A 服务器上,确保内核支持 IP 转发:
- 安装
iptables
:如果 A 服务器尚未安装iptables
,请执行以下命令进行安装: - 配置
iptables
规则:在 A 服务器上,添加以下规则以转发流量:注意:
PREROUTING
规则将进入 A 服务器的特定端口流量重定向到 B 服务器对应的端口。POSTROUTING
规则修改数据包的源地址,使其看起来来自 A 服务器。FORWARD
规则允许流量在 A 服务器上转发。
- 保存
iptables
规则:为了确保规则在重启后仍然生效,您可以使用iptables-persistent
工具:这样,规则会被保存,并在系统重启时自动加载。
- 客户端配置:在客户端上,配置连接到 A 服务器的相应端口:
- 协议1:
- 服务器地址:2.2.2.2
- 端口:20001
- 其他参数与原配置相同。
- 协议22:
- 服务器地址:2.2.2.2
- 端口:20002
- 其他参数与原配置相同。
- 协议1:
通过上述配置,客户端的流量将通过 A 服务器转发到 B 服务器,实现预期的代理效果。
如删除iptables转发
列出iptables
iptables -t nat -L PREROUTING -n --line-numbers
删除对应的转发
iptables -t nat -D PREROUTING 2
方案2
可以将这些命令写入一个 .sh
脚本文件,并通过 bash
命令一键执行来设置规则。
以下是创建脚本的步骤:
1. 创建 ipzs.sh
文件
创建脚本文件并编辑:
在文件中写入以下内容:
保存文件后,为脚本赋予可执行权限:
3. 运行脚本
执行脚本以生效规则:
4. 验证规则
运行脚本后,检查规则是否生效:
说明
- 脚本会一步完成所有规则设置,包括启用 IP 转发、设置 NAT 和转发规则、以及保存规则。
- 规则被保存到
/etc/iptables/rules.v4
,因此在系统重启后依然会生效。
完成后,只需运行一次脚本即可自动完成所有配置。🎉
1. 验证 A 服务器是否接收到流量在 A 服务器运行以下命令,确认是否有流量到达 A 的 21121 和 31122 端口:
- 如果有流量到达,说明客户端到 A 的网络连接正常。
- 如果没有流量到达,请检查客户端配置,或确认防火墙是否允许外部流量进入 A 服务器的这些端口。
2. 验证 NAT 规则是否被触发
在 A 服务器运行以下命令,检查 NAT 规则的流量统计:
输出示例:
pkts
和bytes
增加: 表示 NAT 规则被触发,流量被正确转发。- 没有增加: 说明 NAT 规则未匹配到流量,可能是流量未到达 A 的端口。
3. 验证 B 服务器是否接收到流量
在 B 服务器运行以下命令,检查是否有流量到达对应端口:
- 如果能捕获到流量,说明 NAT 转发已经成功。
- 如果没有流量,请检查 A 和 B 之间的网络连通性,以及 A 的 NAT 配置。
阅读剩余
版权声明:
作者:易策ZeroToOne
链接:https://yicego.com/chatgpt/chatgpt-share/390.html
文章版权归作者所有,未经允许请勿转载。
THE END