在Linux vps上。
wget https://github.com/wkgcass/vproxy/releases/download/1.0.0-ALPHA-4/vproxy-runtime-linux.tar.gz
tar xvf vproxy-runtime-linux.tar.gz
wget https://github.com/wkgcass/vproxy/releases/download/1.0.0-ALPHA-4/vproxy-1.0.0-ALPHA-4.jar -O vproxy.jar
mkdir certs-for-vproxy
cd certs-for-vproxy
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 3650
openssl rsa -in key.pem > key.decrypt.pem
cat cert.pem key.decrypt.pem > certkey.pem
openssl pkcs12 -export -in certkey.pem -out certkey.p12
第三句命令会让你输入私钥的密码、证书的各种信息。其中,证书信息只有CN/Common Name是需要注意的,其他都可以随意填写。 Common Name这里,建议填写为你的服务器的公网ip。
第四句会将私钥解密,会要求你输入刚才设置的密码.
第五句将证书和私钥放到同一个文件certkey.pem里。
第六句将证书私钥放到pkcs12文件中,方便部署使用,文件命名为certkey.p12
启动:
/root/vproxy-runtime-linux/bin/java -Deploy=WebSocksProxyServer -jar /root/vproxy.jar listen 2200 auth myusername:mypassword ssl pkcs12 /root/certs-for-vproxy/certkey.p12 pkcs12pswd p12-file-password
此命令是运行在前台的。因此我们利用boa把该命令运行在后台:
boa /root/vproxy-runtime-linux/bin/java -Deploy=WebSocksProxyServer -jar /root/vproxy.jar listen 2200 auth myusername:mypassword ssl pkcs12 /root/certs-for-vproxy/certkey.p12 pkcs12pswd p12-file-password && reboot
服务器端搭建完成。(参考:https://github.com/asdltqlawsl/anti-gfw-websocks-doc/blob/master/docs/server%E9%83%A8%E7%BD%B2.md)
在客户机器Mac上。
安装jdk11的Mac版。到这里https://www.oracle.com/java/technologies/javase-jdk11-downloads.html 下载jdk-11.0.10_osx-x64_bin.dmg,安装它。
然后,wget https://github.com/wkgcass/vproxy/releases/download/1.0.0-ALPHA-4/vproxy-1.0.0-ALPHA-4.jar -O vproxy.jar
wget https://raw.githubusercontent.com/wkgcass/vproxy/dev/doc/websocks-agent-example.conf
(https://github.com/wkgcass/vproxy/blob/dev/doc/websocks-agent-example.conf)
我的server端使用的是自签名证书,这里还需要增加一步-将自签名证书打到keystore文件里:
keytool -importcert -file 从服务器上下载的证书文件cert.pem -alias 随便设置一个名字 -keystore ~/vproxy-cert.keystore -storepass 替你的keystore文件所设的密码
(参考https://blog.csdn.net/moonpure/article/details/82836517)
nano websocks-agent-example.conf
cat websocks-agent-example.conf
agent.listen 11080
proxy.server.auth myusername:mypassword
agent.cacerts.path ~/vproxy-cert.keystore
agent.cacerts.pswd my-set-password
agent.gateway off
agent.strict off
agent.pool 10
proxy.server.list.start
websockss://vps-public-ip:2200
proxy.server.list.end
proxy.domain.list.start
/.*/
proxy.domain.list.end
配置文件的详细说明,这里说明一下关键项的含义,后面会说一下最佳实践:
agent.listen
监听端口,它是socks5代理,我把端口设置为11080agent.cacerts.path
和agent.cacerts.pswd
path对应了上一步证书配置时的keystore路径,pswd表示密码。如果服务端使用的是正常CA签发的证书,那么这两个配置项可以省略agent.cert.verify
表示是否开启整数校验,默认on
表示开启,可以设置为off
,这样可以不设置自定义证书链也能正常使用agent.gateway
表示启动网关模式。如果开启,那么这个agent可以被任何“能够访问你的计算机的人”访问到(否则只有本机能访问)。如果你需要让其他机器使用代理功能(比如手机平板,或者其他人的设备),那么这一项需要设置为on
,否则为了安全考虑,设置为off
agent.gateway.pac.address
表示对外暴露一个pac接口。如果开启,那么agent会额外监听一个端口来响应pac文件的请求。这个pac文件会告诉别人,应该使用agent来代理连接。如果想让iOS设备访问本机进行代理,那么这个pac文件是必要的。此外,如果这一项开启,那么上面的agent.gateway
也要开启,否则别人没办法访问到这个agentproxy.domain.list
允许配置域名后缀、正则表达式、pac文件等规则。这个常用的pac文件是可以正常使用的。也就是说,你可以放心的让所有流量都经过agent,然后agent会自动处理哪些需要代理哪些不需要。如果你愿意,你可以根据模板中的注释配置你需要过滤的域名/ip。如果你需要将任何经过agent的流量都送到server端做代理,那么你可以只配置一项:/.*/
,表示匹配任何字符,这在chrome+switchyomega的情况下非常有用。
No comments:
Post a Comment