Tailscale/WireGuard搭建

# WireGuard 使用docker, 但是没有打洞带宽肯定限制到服务器;所有的客户端流量都走 WireGuard服务器 就会很慢; 通常使用即可
# 优势是: 可以直接接管全局的流量 (不要用于FQ,两天就被阻断了, 太容易被辨识了...)

# https://github.com/WeeJeWel/wg-easy
# 最好修改端口
WG_HOST=18.xx.xx.xxx
PASSWORD=password
# 容器内的端口51820不能改(写死到源码了已经),只修改为40088
docker run -d \
  --name=wg-easy \
  -e LANG=de \
  -e WG_HOST=$WG_HOST \
  -e PASSWORD=$PASSWORD \
  -e WG_DEFAULT_DNS="$WG_HOST" \
  -e WG_PORT=40088 \
  -p 40088:51820/udp \
  -p 44821:51821/tcp \
  --cap-add=NET_ADMIN \
  --cap-add=SYS_MODULE \
  --sysctl="net.ipv4.conf.all.src_valid_mark=1" \
  --sysctl="net.ipv4.ip_forward=1" \
  --restart unless-stopped \
  ghcr.io/wg-easy/wg-easy

# 删除
docker rm -f wg-easy
# 访问web
http://[IP]:44821
# 客户端
https://www.wireguard.com/install/
# nixos直接安装wireguard-tools包, 然后在图形化管理界面[+添加新连接][导入vpn配置]即可

# ubuntu客户端连接, 就会根据配置文件起来一个名叫c的网卡
sudo apt install wireguard-tools
sudo wg-quick up ./c.conf

# 测试ip
curl ipinfo.io

# Tailscale使用开源版本的 Headscale
  • Headscale

# 配置文件, 基本上无需修改: juanfont/headscale/blob/main/config-example.yaml 到 ./config/config.yaml
listen_addr 修改为0.0.0.0

wget https://kkgithub.com/juanfont/headscale/releases/download/v0.23.0-alpha3/headscale_0.23.0-alpha3_linux_amd64
sudo ./headscale_0.23.0-alpha3_linux_amd64 serve debug --config=/home/jcleng/book/.vscode/config/config.yaml

# 测试
http://172.29.199.136:8081/
# ui界面
sudo docker run -itd -p 9443:443 -p 9080:80 --name=headscale-ui amwpfiqvy/headscale-ui:latest
# 获取apikey, 提供给ui访问
sudo ./headscale_0.23.0-alpha3_linux_amd64 apikeys create -e 720d --config=/home/jcleng/book/.vscode/config/config.yaml
5IgiLEANzg.rK9zaR2sBCvabfyGyflemsu_htBtl7-ymfh7nHnAycw

# 配置ui连接需要同源, 不然跨预(把默认的2019端口干掉)

{
    admin 0.0.0.0:2020
}

:9091 {
  reverse_proxy /web/* {
    to http://127.0.0.1:9080
  }
  reverse_proxy /api/* {
    to http://127.0.0.1:8081
  }
}

caddy run -config ./Caddyfile

  • 配合udp2raw进行协议转换,如果ip被阻断也无效

https://github.com/wangyu-/udp2raw/releases

# 服务端
./udp2raw_arm -s -l0.0.0.0:16389 -r 127.0.0.1:16388 -k "pass" --raw-mode faketcp --cipher-mode xor  -a

# 客户端
sudo ./udp2raw_amd64 -c -l0.0.0.0:3333  -r18.162.134.79:16389  -k "pass" --raw-mode faketcp --cipher-mode xor  -a

# 然后使用wg导入配置修改
Endpoint = 0.0.0.0:3333
  • nmcli 导入

nmcli con import type wireguard file ./wg0.conf

nmcli -p device show wg0