最近温习了一些LINUX系统的知识,说实话现在学习起来真的很简单,度娘上一问最起码三个不同答案,你挑一个适合你的,比如不成,参考另外两个就行,这里Tami给你带来Linux系统实现中继中转,现Centos6 64bit实测SS转发成功,参考方式
转发是什么:
假设你本地是上海,你目的地在美国,从上海直连美国距离太远,难免丢包绕线高延迟,那我们就可以借助一个跳板,假设跳板是日本,那我们的走线方式就是: 上海->日本->美国
这里给出两种方案,用HaProxy效率高,用端口转发稳定,各有优缺点。
方法A—-用HaProxy实现ss转发
安装HaProxy
Debian/Ubuntu系统用这个命令安装:
- apt–get –y install haproxy
Centos系统用这个命令安装:
- yum –y install haproxy
安装完成后用命令vi /etc/haproxy/haproxy.cfg进行编译,把内容都删除,复制以下代码:
global ulimit-n 51200 defaults log global mode tcp option dontlognull timeout connect 5000 timeout client 50000 timeout server 50000 frontend ss-in bind *:6666 default_backend ss-out backend ss-out server server1 233.233.233.233:2333 maxconn 20480
以上红色6666就是你本地SS客户端填写的端口,最后蓝色内容就是你美国SS的IP和端口,其他信息不用修改保存退出。(你的中继账号端口和Shadowsocks账号端口是可以一致的,也就是上面的 6666 和 2333 这两个端口可以使用同样的端口)
然后启动haproxy
haproxy –f /etc/haproxy/haproxy.cfg
停止haproxy
killall haproxy
如果无法连接,先确认你的原Shadowsocks账号能否正常使用,然后查看防火墙规则(iptables -L或者用service iptables stop关闭防火墙)是否有问题(还有需要注意的是HaProxy中继只支持TCP,也就是不支持部分需要UDP的游戏)
到这里HaProxy的SS中转就结束了。
方法B—-用iptables端口转发实现中转
1)首先允许iptables的端口转发vi /etc/sysctl.conf修改其中net.ipv4.ip_forward = 1 默认是0 这样允许iptalbes FORWARD
2)输入命令service iptables stop(关闭防火墙)之后输入(也可以vi /etc/sysconfig/iptables直接修改)
iptables -t nat -A PREROUTING --dst 日本 -p tcp --dport 8388 -j DNAT --to-destination 美国:8388 iptables -t nat -A POSTROUTING --dst 美国 -p tcp --dport 8388 -j SNAT --to-source 日本
3)service iptables save(保存配置)
4)service iptables start(启动iptables)
至此,端口转发也完成了,此方法同时支持UDP转发,只要将TCP改为UDP便可实现(TCP端口是8388,UDP端口可以加一变成8389),但Tami未测试,理论上是可以的。更多阅读请参考:http://www.cnblogs.com/apexchu/p/4255551.html
编译:Tami