Total Pageviews

Friday, 24 November 2017

Shadowsocks利用tinyPortMapper实现中继(中转/端口转发)加速

安装步骤

首先建立并进入文件夹(假设你当前目录是 /root ,那么 tinyPortMapper的目录就是 /root/tinyPortMapper ):

mkdir tinyPortMapper && cd tinyPortMapper
然后获取最新的版本号:

tinyPortMapper_ver=$(wget -qO- "https://github.com/wangyu-/tinyPortMapper/tags"| grep "/wangyu-/tinyPortMapper/releases/tag/"| head -n 1| awk -F "/tag/" '{print $2}'| sed 's/\">//') && echo ${tinyPortMapper_ver}
执行完后会输出获取的最新版本号,比如 20171112.0这样的日期格式,如果返回是空或者其他错误的内容,那么就代表获取失败。

获取失败的情况请去 Github 获取最新的版本号,例如 20171112.0,然后执行 tinyPortMapper_ver=20171112.0(自己替换版本号)即可继续下面的下载步骤。

wget -N --no-check-certificate "https://github.com/wangyu-/tinyPortMapper/releases/download/${tinyPortMapper_ver}/tinymapper_binaries.tar.gz"

# 解压下载的压缩包
tar zxvf tinymapper_binaries.tar.gz

# 然后你需要判断一下VPS的位数,运行 uname -m 会输出VPS的位数,如果显示 x86_64 则是64位,如果显示 386/i386/686/i686 这四个之一,则是32位。
# x86_64,64位运行:
mv tinymapper_amd64 tinymapper
# 386/i386/686/i686 四个之一,32位运行:
mv tinymapper_x86 tinymapper

# 删除无用的压缩包和其他平台文件。
rm -rf version.txt
rm -rf tinymapper_*
rm -rf tinymapper_binaries.tar.gz
最后只需要赋予一下执行权限即可继续看下面的使用方法了。

chmod +x tinymapper

完整端口转发命令:
nohup ./tinymapper -l 0.0.0.0:2333 -r 12.12.12.12:6666 -t -u > /tmp/tinymapper.log 2>&1 &

解释:
-l 0.0.0.0:2333
指的是 监听本地网卡所有 ipv4地址的端口(2333),也就是 转发的端口。Shadowsocks客户端链接中继服务器时填写这个端口(2333)。

-r 12.12.12.12:6666
指的是 被转发的 IP(12.12.12.12) 和 端口(6666),也就是你要中继的服务器的 IP 和 端口。

注意:这里的 中继端口(2333) 和 被中继端口(6666) 是可以一样的,我区分开只是为了让你们更好地理解。

-t
指的是 转发TCP协议的流量。

-u
指的是 转发UDP协议的流量。

注意:-t TCP和 -u UDP可以只转发其一,都写上参数(-t -u),则代表都转发。
> /tmp/tinymapper.log 2>&1 &

指的是 日志记录到 /tmp/tinymapper.log 这个临时文件夹,每次重启服务器都会清空。如果不想清空可以改成 tinymapper.log (但记得定时清理)。

停止所有端口转发进程:
kill -9 $(ps -ef|grep tinymapper|grep -v grep|awk '{print $2}')

卸载方法

假设 tinyPortMapper 的目录是 /root/tinyPortMapper ,那么:

# 记得先停止所有转发进程
rm -rf /root/tinyPortMapper

简单解释
注意:假设你的中继服务器也就是现在在操作的服务器 IP 是 1.1.1.1 ,那么你的 中继端口 就是 2333 。你的 被中继服务器的 IP 是 12.12.12.12 ,端口是 6666 。

这时候你的 Shadowsocks客户端 填写信息的时候 IP 就是 1.1.1.1 ,端口 就是 2333 。

所以原理就是:
Shadowsocks客户端通过 1.1.1.1:2333 链接中继服务器 1.1.1.1 ,然后中继服务器把端口 2333 的流量转发到 被中继服务器 12.12.12.12 的端口 6666 上面。然后 被中继服务器 也就是上面的 Shadowsocks服务端,就会去访问你要的数据,最后依次返回 中继服务器 -> Shadowsocks客户端。

其他问题

如果你设置后无法链接,那么多半是防火墙 阻拦了,只要开放端口 就行了:

以上面的 示例的中继端口 2333 为例。

iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 2333 -j ACCEPT
iptables -I INPUT -m state --state NEW -m udp -p udp --dport 2333 -j ACCEPT
# 如果要删除端口开放规则,只需要把 -I 改成 -D 即可。
iptables -D INPUT -m state --state NEW -m tcp -p tcp --dport 2333 -j ACCEPT
iptables -D INPUT -m state --state NEW -m udp -p udp --dport 2333 -j ACCEPT
开机启动

因为这个工具并没有开机启动的设定,所以需要设置系统的开机启动。

Centos系统:
chmod +x /etc/rc.d/rc.local
vi /etc/rc.d/rc.local

Ubuntu/Debian系统:
chmod +x /etc/rc.local
vi /etc/rc.local

项目地址:https://github.com/wangyu-/tinyPortMapper/


No comments:

Post a Comment