使用socat做端口转发

由于工作需要,要部署一个minecraft的服务器(就是传说中的bilicraft~),部署好了后发现。。。狗日的江苏电信。。。南下到上海/广东方向的骨干有问题。。。只好做一个端口转发来让用户能顺利访问了
本来是打算用iptables来做的,结果发现了一个很神奇的问题,我自己的日本的服务器(就是现在blog用的这台)写好iptables后可以用,但是国内的服务器却不行,研究了2天,并不知道原因在哪里(主要是上面还有主站的业务,如果清掉所有的iptables重来的话我觉得我会死。。。)
于是自己google+请教了老大,得到了几个姿势:redir/socat/xinetd
总结了一下,发现了几个问题
redir:简单,但是不支持UDP,MC的服务端虽然很少见,但是仍然会用到UDP
socat:支持UDP,支持ipv6,只是老大的blog居然没写怎么用。。。我只好自己去搜(搜到后发现其实异常简单)
xinetd:功能强大,但是。。。好复杂,要写配置文件,反正只是mc,要求没那么高,没必要上这个
于是乎采用了socat
1、安装就不用说了,直接

apt-get install socat

2、起一个screen,没有的话安装一个

screen -S socat-tcp

3、起socat

socat TCP4-LISTEN:25565,fork TCP4:1.2.3.4:25565

其中:TCP4 #TCP端口ipv4协议
25565 #MC的端口,换成你要转发的端口即可
fork #多链接模式,当有一个人连上来后,复制一个同样的端口继续监听
1.2.3.4:25565 #目标IP和端口,不解释
按下回车后不会有任何提示,直接ctrl+ad退出这个screen即可,让他在后台静静的运行吧。。。
因为MC还需要一个UDP端口,然后重复2-3,TCP4改成UDP4然后起服务即可
这样就可以比较方便的弄好端口转发了~BC们的玩家又回到了流畅的日子了(笑