登陆linux vps,安装nodejs环境和go环境,以及yarn(参见https://briteming.blogspot.com/2019/09/ndejs-yarn.html)
git clone https://github.com/genshen/wssocks wssocks-by-genshen
cd wssocks-by-genshen
cd status-web
yarn install
yarn build
(此步会在当前目录下,生成build目录)
cd $GOPATH
go get -u -v github.com/rakyll/statik
(go最低需为1.13版)
cd ~/wssocks-by-genshen
go install
(可执行文件wssocks就会出现在$GOBIN/下。)
然后运行:
wssocks server --addr :1089 --tls --tls-cert-file /root/.acme.sh/urdomain.com/fullchain.cer --tls-key-file /root/.acme.sh/urdomain.com/urdomain.com.key --auth_key 316C5EBF1C04CC21B5016789
不过此命令是运行在前台的,我们可以利用systemd把该命令运行为service:
nano /etc/systemd/system/wssocks-using-tls-parameters.service
cat /etc/systemd/system/wssocks-using-tls-parameters.service
[Unit]
After=network.target
[Service]
ExecStart=/root/go/gopath/bin/wssocks server --addr :1089 --tls --tls-cert-file /root/.acme.sh/urdomain.com/fullchain.cer --tls-key-file /root/.acme.sh/urdomain.com/urdomain.com.key --auth_key 316C5EBF1C04CC21B5016789
Restart=always
[Install]
WantedBy=multi-user.target
然后,运行:
systemctl start wssocks-using-tls-parameters
systemctl enable wssocks-using-tls-parameters
服务器端搭建完成。
(上面用到了acme.sh申请的letsencrypt证书,其实使用自签名的证书也是ok的:)
从上面可见,wssocks提供了“--tls --tls-cert-file /root/.acme.sh/urdomain.com/fullchain.cer --tls-key-file /root/.acme.sh/urdomain.com/urdomain.com.key”参数。如果不使用它的这个参数,我们也可利用nginx做反向代理,代理wssocks所监听的端口1089.
下面,在服务器上,另开一个wssocks进程,以监听端口1088为例,说明如何设置nginx。修改nginx的配置文件如下:
server {
listen 80;
server_name urdomain.com;
return 301 https://$http_host$request_uri;
}
server {
listen 447 ssl;
server_name urdomain.com;
ssl_certificate /root/.acme.sh/urdomain.com/fullchain.cer;
ssl_certificate_key /root/.acme.sh/urdomain.com/urdomain.com.key;
location / {
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
proxy_pass http://127.0.0.1:1088;
}
}
重启nginx.
如果你不想编译wssocks,你可以下载程序作者提供的可执行文件:
wget https://github.com/genshen/wssocks/releases/download/v0.5.0-beta.3/wssocks-linux-amd64
chmod 755 wssocks-linux-amd64
然后运行:
/root/wssocks-linux-amd64 server --addr :1088 --auth_key 316C5EBF1C04CC21B5016788
不过此命令是运行在前台的,我们可以利用systemd把该命令运行为service:
nano /etc/systemd/system/wssocks.service
cat /etc/systemd/system/wssocks.service
[Unit]
After=network.target
[Service]
ExecStart=/root/wssocks-linux-amd64 server --addr :1088 --auth_key 316C5EBF1C04CC21B5016788
Restart=always
[Install]
WantedBy=multi-user.target
然后,运行:
systemctl start wssocks
systemctl enable wssocks
服务器端搭建完成。
在本地机器mac上。
git clone https://github.com/genshen/wssocks wssocks-by-genshen
cd wssocks-by-genshen
cd status-web
yarn install
yarn build
cd $GOPATH
go get -u -v github.com/rakyll/statik
cd ~/wssocks-by-genshen
go install
(可执行文件wssocks就会出现在$GOBIN/下。)
如果你不想编译,也可直接下载可执行文件:
wget https://github.com/genshen/wssocks/releases/download/v0.5.0-beta.3/wssocks-darwin-amd64
chmod 755 wssocks-darwin-amd64
~/wssocks-darwin-amd64 client --addr 127.0.0.1:1083 --remote wss://urdomain.com:1089 --key 316C5EBF1C04CC21B5016789
针对第二个服务器端进程的客户端命令:
~/wssocks-darwin-amd64 client --addr 127.0.0.1:1082 --remote wss://urdomain.com:447 --key 316C5EBF1C04CC21B5016788
然后,设置浏览器的socks5代理服务器地址为127.0.0.1 ,端口为1083或1082,浏览器即可翻墙。
上面的urdomain.com是购买的付费域名,那么上面这么操作后,浏览器即可翻墙。
如果urdomain.com是你注册的免费的可解析的域名,那么此域名有可能已被gfw封锁,无法解析,导致用客户端命令连接不上服务器。解决办法:
sudo networksetup -setdnsservers "Wi-Fi" 127.0.0.1
运行某个ss客户端程序。
cd ~/dns-tcp-socks-proxy;sudo ./dns_proxy
(用法详见https://briteming.blogspot.com/2019/07/dns-tcp-socks-proxysocks-proxydns.html)
然后运行上面的客户端命令。
(如果你合拢了mac机器的机盖,需先运行
sudo networksetup -setdnsservers "Wi-Fi" 127.0.0.1
sudo killall dns_proxy;cd ~/dns-tcp-socks-proxy;sudo ./dns_proxy
然后重新运行客户端命令.如果运行客户端命令后,还是不能连上服务器,那就再运行一次客户端命令,通常就能连上了。)
然后,设置浏览器的socks5代理服务器地址为127.0.0.1 ,端口为1083或1082,浏览器即可翻墙。
实测使用wssocks的“--tls --tls-cert-file /root/.acme.sh/urdomain.com/fullchain.cer --tls-key-file /root/.acme.sh/urdomain.com/urdomain.com.key”参数的方法比使用nginx做反向代理的方法更坚挺。
因此所使用的客户端命令相应的为:
~/wssocks-darwin-amd64 client --addr 127.0.0.1:1083 --remote wss://urdomain.com:1089 --key 316C5EBF1C04CC21B5016789
项目地址:https://github.com/genshen/wssocks
https://github.com/genshen/wssocks/issues/28
相关帖子:
https://briteming.blogspot.com/2021/04/wssocks-by-mikubill.html
https://briteming.blogspot.com/2020/05/websocks.html
https://briteming.blogspot.com/2018/04/haskellwstunnel-by-erebe.html
No comments:
Post a Comment