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