anti-proxy school server IP to my host and NAT Traversal
1. Caddy 安装与配置
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy
sudo tee /etc/caddy/Caddyfile > /dev/null << 'EOF'
:8080 {
reverse_proxy http://10.26.240.78
log {
output file /var/log/caddy/access.log
format json
}
}
EOF
sudo systemctl restart caddy
sudo systemctl status caddy
curl -I http://127.0.0.1:8080
现在访问本机8080端口会跳到学校内网的服务10.26.240.78
2. Tailscale Funnel
tailscale funnel --bg localhost:8080
tailscale funnel status
web访问tailscale分配的域名
访问失败 ,参考
https://tailscale.com/docs/how-to/set-up-https-certificates
web不认识p2p加密的https
tailscale funnel off
3. ngrok(成功暴露)
curl -sSL https://ngrok-agent.s3.amazonaws.com/ngrok.asc | sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null
echo "deb https://ngrok-agent.s3.amazonaws.com buster main" | sudo tee /etc/apt/sources.list.d/ngrok.list
sudo apt update
sudo apt install ngrok
ngrok config add-authtoken <your-token>
ngrok http 8080
4. frp 配置与启动
配置文件 frpc.toml
serverAddr = "<frp-server>"
serverPort = 7000
auth.token = "<your-token>"
webServer.addr = "127.0.0.1"
webServer.port = 7400
webServer.user = "admin"
webServer.password = "admin"
[[proxies]]
name = "campus-1"
type = "tcp"
localIP = "<internal-ip>"
localPort = 80
remotePort = 7621
healthCheck.type = "tcp"
healthCheck.timeoutSeconds = 3
healthCheck.maxFailed = 2
healthCheck.intervalSeconds = 5
[[proxies]]
name = "campus-web-1"
type = "tcp"
localIP = "127.0.0.1"
localPort = 7400
remotePort = 7622启动命令:
pkill -9 frpc
sleep 40
./frpc -c frpc.toml清理命令:
tailscale funnel off
pkill -9 frpc
5. Cloudflare Tunnel
sudo apt-get install cloudflared唯一一个在ubuntu仓库上有的包,最简单
# 1. 创建隧道
TUNNEL_NAME="my-tunnel"
cloudflared tunnel create "$TUNNEL_NAME"
# 2. DNS 路由
cloudflared tunnel route dns "$TUNNEL_NAME" tunnel.bakamake.org
# 3. 运行隧道
cloudflared tunnel run --url http://localhost:8080 --protocol http2 "$TUNNEL_NAME"
创建看起来也很快,就是比较黑箱