1. https://hub.docker.com/r/whuwxl/pptpd
  2. https://hub.docker.com/r/hwdsl2/ipsec-vpn-server
  3. https://hub.docker.com/r/ventz/openvpn

安装openvpn

  1. 参考https://hub.docker.com/r/kylemanna/openvpn/
  2. 使用 https://github.com/jippi/docker-pritunl/blob/master/README_CN.md
# 设置openvpn 命名卷,存储配置等数据
# 详细地址 https://github.com/kylemanna/docker-openvpn

OVPN_DATA="ovpn-data"
docker volume create --name $OVPN_DATA

# VPN.SERVERNAME.COM为服务器域名,采用udp协议
docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u tcp://server.vs2010wy.top
# 生成服务器证书和CA,私钥,生成过程输入保护证书和ca的密码比如123456。后面签发客户端证书会用到
docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki

# 启动openvpn服务器
docker run -v $OVPN_DATA:/etc/openvpn -d  --net host --restart always --cap-add=NET_ADMIN kylemanna/openvpn

# 生成客户端使用配置  CLIENTNAME.ovpn
docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full CLIENTNAME nopass

docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient CLIENTNAME > CLIENTNAME.ovpn


  1. 使用pritunl
data_dir=$(pwd)/data

mkdir -p ${data_dir}/pritunl ${data_dir}/mongodb
touch ${data_dir}/pritunl.conf

docker run \
    --name pritunl \
    --privileged \
    --network=host \
    --dns 127.0.0.1 \
    --restart=unless-stopped \
    --detach \
    --volume ${data_dir}/pritunl.conf:/etc/pritunl.conf \
    --volume ${data_dir}/pritunl:/var/lib/pritunl \
    --volume ${data_dir}/mongodb:/var/lib/mongodb \
    changhui/docker-pritunl

# ghcr.io/jippi/docker-pritunl 可能需要这个
# docker exec -it pritunl pritunl default-password 获取默认密码,然后设置为pritunl
# 控制台是80 443  ,工作ports1194默认账密是pritunl :pritunl
# server生成的ovpn证书,需要添加如下值改路由
route-nopull
route 10.10.10.0  255.255.255.0 vpn_gateway

# 一行命令启动客户端
# 证书config.ovpn里添加 auth-user-pass /tmp/auth.txt
docker run --name openvpnclient -d -e DISABLE_FIREWALL=true --restart always  --network host  -v  /root/install/config.txt:/config.ovpn:ro -v /root/install/auth.txt:/tmp/auth.txt  --privileged   raphmad/openvpn3_linux

#auth.txt是config.ovpn里配置的 auth-user-pass /tmp/auth.txt 指令。
cat << EOF >auth.txt
username
password
EOF

安装ddns

docker run --restart always -d  -e API_KEY=lkWLbe2GnXrzwx8yY_mS_j4L7M58M6Tjc9zPS4A6 -e ZONE=vs2010wy.top -e SUBDOMAIN=server oznu/cloudflare-ddns

申请证书

docker run --rm  -it    -v "$(pwd)/out":/acme.sh    --net=host   neilpang/acme.sh --register-account -m my@example.com

docker run --rm  -it    -v "$(pwd)/out":/acme.sh    --net=host   neilpang/acme.sh  --issue -d server.vs2010wy.top  --standalone

SNI Fake

  1. 找到github真实可用ip地址,使用dig网页版
  2. 构造浏览器参数
     # github
     --host-rules="MAP *github.com gh1, MAP *githubusercontent.com gh2" --host-resolver-rules="MAP gh1 20.200.245.247, MAP gh2 185.199.108.133" --ignore-certificate-errors
     # 合并版的包括多个站点
     --host-rules="MAP github.com gh,MAP discord.com dis, MAP flickr.com flc" --host-resolver-rules="MAP gh 20.200.245.247,MAP dis 162.159.128.233,MAP flc 13.224.165.123" --test-type --ignore-certificate-errors
  3. 编辑浏览器启动参数,将第2步的内容添加到快捷方式的命令行参数部分就可以了
  4. 参考Sheas-Cealer , Cealing-Host