418 字
2 分钟
Frp + Tailscale 内网穿透全记录
近日攻防演练导致 frp 协议被校园网阻断,但包裹一层 tailscale 即可解决。为方便日后配置,特此记录全部细节。
以下内容假设你有内网服务器 A 和公网机器 B,已配置好 A→B 的 ssh 连接,且 B 的 6000 和 7000 端口对公网开放。
1. Tailscale 组网
访问 tailscale.com
,登录后点击 Add device,按照提示在两台机器上分别安装好 tailscale。装好后,网页应该提示 Connected,并显示每个机器的 tailscale 内网地址(以 100 开头)。
如果是阿里云,100 开头的 ip 段可能被禁,参考Tailscale出口节点无网络问题的调试与分析,在启动 tailscale 时加一个参数解决问题:
tailscale up –netfilter-mode=off
2. 配置 Frp
首先,把 frpc 和 frps 这两个二进制文件分别放到内网机器 A 和公网机器 B 的 /usr/local/bin
下,然后
- 在内网机器 A 上创建
/etc/frp/frpc.toml
,内容为
serverAddr = "B机器的tailscale内网ip"
serverPort = 7000
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000
- 在公网机器 B 上创建
/etc/frp/frps.toml
,内容为
bind_port = 7000
在两台机器上分别用 systemd 守护进程,以内网机器 A 上的 frpc 为例,创建 /etc/systemd/system/frpc.service
,内容为
[Unit]
Description=FRP Server
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/frpc -c /etc/frp/frpc.toml
[Install]
WantedBy=multi-user.target
然后 systemd 启动四件套:
sudo systemctl daemon-reload
sudo systemctl enable frpc
sudo systemctl start frpc
sudo systemctl status frpc
公网机器 B 完全同理,只需要把 frpc 换成 frps。
3. 连接
在任意机器上通过以下命令访问内网机器 A
ssh -p 6000 [A机器用户名]@[B机器的公网ip]
Frp + Tailscale 内网穿透全记录
https://blog.variantconst.com/posts/frp-tailscale-nat/