由于国内网络屏蔽,很多国外的优质资源,国内用户是没有办法使用的,出于学习的考虑, 本篇分享下几个常见的代理问题和解决办法。
shadowsocks 是一个比较轻量化的代理,搭建起来相对简单,推荐使用 Python 的 shadowsocks 包,如果你的发行版里面有相应的 shadowsocks 包的话, 推荐使用系统的包,自带开机启动。
服务端推荐使用 Python 的客户端。 登录你的服务器,确保该服务器可以连接“外网”:
curl www.google.com
如果返回正确,说明网络是通的。
要求服务器的配置大于 128M,另外带宽足够,网络质量好。
下面我以centos为例来说明安装步骤:
首先是需要安装 shadowsocks 客户端:
yum install libsodium
pip install shadowsocks
安装完成后检查是否安装成功:
which ssserver
which sslocal
确保这两个安装完成。
内核调整参数,参照 shadowsocks 官方网站:
vim /etc/sysctl.conf
fs.file-max = 51200
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.core.netdev_max_backlog = 250000
net.core.somaxconn = 4096
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 10000 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_mem = 25600 51200 102400
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_congestion_control = hybla
其中很多选项的调整可以自行百度查阅,也可以参考后文给出的链接。
示例配置:
{
"server":"0.0.0.0",
"server_port": 8080,
"port_password": {
"8080": "123456",
},
"timeout":300,
"method":"chacha20",
"fast_open": true,
"workers": 20
}
其中 port_password
是可以配置多个端口,多个不同的密码的,另外最后的 workers
参数指定 worker
的数量。
运行服务端程序:
ssserver -c shadowsocks.json --pid-file shadowsocks.pid -d start
检查端口是否正常:
netstat -antp | grep 8080
docker file 如下:
FROM python:3.6-alpine
RUN apk add libsodium-dev
RUN pip install shadowsocks
COPY ./shadowsocks.json /shadowsocks.json
ENTRYPOINT ["ssserver", "-c", "shadowsocks.json"]
EXPOSE 8080
客户端的下载推荐去官网。
客户端是 GUI 程序,直接填入服务端的参数即可,服务器的地址填写服务器的外网地址,端口,密码,加密方法与 shadowsocks.json 中的配置保持一致。
浏览器推荐使用 Chrome ,配合插件 SwitchyOmega 使用,以上两者推荐使用离线包安装。
在 omega 中增加一个情景模式,代理类型选择 socks5,ip 填写127.0.0.1,端口填写1080。
shadowsocks 客户端程序会在连接服务端之后,建立一个本地的 socks5 监听,这个监听是没有认证的,所以浏览器可以配置,switchyOmega 中不能认证,所以不能使用 switchyOmega 直接连接服务端。
我们的云主机一般都在国外,我们在国内,虽然网络是通了,但是由于网路比较长,要走跨海光缆通信,延时较正常的国内访问要慢很多,根本原因是距离比较远,所以我们需要对流量进行加速。
第一种比较靠谱的选择是使用有服务商提供的专门的加速服务,比如说微林,这个注册需要邀请码,如果有需要的话,可以找我提供。
一般服务商提供的服务比较稳定,服务支持也相对较好,不想自己折腾的,可以选择购买服务商的流量加速服务。
如果想自己加速流量,可以选择国内阿里云和腾讯云的服务,通过流量转发来加速。云服务提供商优化了带宽,可以提供较好的网络质量,但是总的算下来费用要比流量加速商的服务多。
这里以 centos 7 为例,假设服务端监听的端口是8989,服务器的公网地址是:121.73.256.36
sudo firewall-cmd --set-default-zone=public
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --zone=public --add-forward-port=port=8080:proto=tcp:toport=8080:toaddr=121.73.256.36 --permanent
sudo firewall-cmd --reload
然后客户端直接连接国内云服务器的 8080 端口即可。
你可以使用网站 http://ping.pe 来检验两者的差异性。
代理转换是指在不同的代理协议之间切换。这里我比较推荐使用 cow
工具来做转换。
项目地址: https://github.com/cyfdecyf/cow
从 shadowsocks 代理转换成 http 代理,配置示例:
listen = http://0.0.0.0:1080
proxy = ss://aes-128-cfb:[email protected]:8080
core 2