一般我们服务器中转 tcp 用 haproxy, 也很好测试 , 直接连上看看就知道了 . 但是 UDP 的中转却不够直观好测 . 今天就来分享下 , 如果有朋友有更好的方法 , 也欢迎留言告知 .
测试环境 :
- 用户 Windows 使用 nc 命令 (netcat.exe)
- 目标服务器 A(188.166.77.78). 装有你懂的业务的服务器
- 中转服务器 B(47.75.124.57), 进行端口转发 , 转发流量给 B
首先 , 在中转服务器 B 上设置中转功能
一般中转 UDP 没有什么太好用的工具 , 我一般直接使用 iptables.
首先打开服务器的转发功能
vi /etc/sysctl.conf
设置 net.ipv4.ip_forward = 1
使用 iptables 进行中转
iptables -t nat -A PREROUTING -p udp -i eth0 --dport 9191 -j DNAT --to 47.75.124.57 iptables -t nat -A POSTROUTING -j MASQUERADE service iptables save service iptables restart
这里的 eth0
是你当前的公网网卡 ,9191
是你要中转的端口 . 如果是端口段的话 , 可以写成 9191:10000
就代表中转 9191 到 10000 的所有端口 .47.75.124.57
请修改成你要中转的目标服务器 .
第二步 : 打开目标服务器 A 上的 udp 日志
命令是 :tcpdump udp port 9191
哦哦 , 服务器上我已经默认开好了你懂的的工具 , 所以是支持监听 9191 的 udp 的端口哦 .
第三步 : windows
一般测试我们使用 netcat, 就是传说中的 nc 命令 .windows 版的下载地址 :https://github.com/diegocr/netcat/raw/master/nc.exe
使用命令连接中转服务器 B, 看看 udp 的信息是否会在目标服务器 A 上出现 :nc.exe -u 188.166.77.78 9191
(cmd 下先切换到 uc.exe 所在的目录哦 )
然后随便输入几个字符 .
这时 , 你再看目标服务器 A 上的 udp 日志 , 就会看到会有 udp 连接的信息了 . 就说明中转成功拉 . 如果没有日志就说明没成功 …
有疑问欢迎留言 , 尽力解答 .
本机通过B中转的udp到A,A发的数据会原路返回B,然后到本机,还是直接到本机啊?需不需要另外设置
pystun 了解下
回头了解一下
大佬最近开始养生不推小鸡了吗?第三步命令错了,nc.exe
感谢.已修正.值得搞的小鸡少.线路扯来扯去就那几个,主要找靠谱的服务商.