当前位置:   article > 正文

Tailscale headscale部署_headscale api

headscale api

tailscale收费有限制,headscale开源,可做服务端,然后用tailscale作为客户端来接入网络

  1. 服务端安装

拉取headscale

wget https://github.com/juanfont/headscale/releases/download/v0.20.0/headscale_0.20.0_linux_amd64 -O /usr/local/bin/headscale

赋权限

chmod +x /usr/local/bin/headscale

创建目录

  1. mkdir -p /etc/headscale #配置目录
  2. mkdir -p /var/lib/headscale #存储数据与证书

创建数据库文件

touch /var/lib/headscale/db.sqlite

拉取配置文件

wget https://github.com/juanfont/headscale/raw/main/config-example.yaml -O /etc/headscale/config.yaml

修改配置文件:

修改server_url服务端的ip地址和端口

unix_socket: /var/run/headscale/headscale.sock

创建服务

vi /etc/systemd/system/headscale.service
  1. # /etc/systemd/system/headscale.service
  2. [Unit]
  3. Description=headscale controller
  4. After=syslog.target
  5. After=network.target
  6. [Service]
  7. Type=simple
  8. User=headscale
  9. Group=headscale
  10. ExecStart=/usr/local/bin/headscale serve
  11. Restart=always
  12. RestartSec=5
  13. # Optional security enhancements
  14. NoNewPrivileges=yes
  15. PrivateTmp=yes
  16. ProtectSystem=strict
  17. ProtectHome=yes
  18. ReadWritePaths=/var/lib/headscale /var/run/headscale
  19. AmbientCapabilities=CAP_NET_BIND_SERVICE
  20. RuntimeDirectory=headscale
  21. [Install]
  22. WantedBy=multi-user.target

创建headscale用户

useradd headscale -d /home/headscale -m

修改 /var/lib/headscale 目录的 owner

chown -R headscale:headscale /var/lib/headscale

重新加载

systemctl daemon-reload

开机自启

systemctl enable --now headscale

查看运行状态

systemctl status headscale

创建命名空间

headscale namespaces create default

查看命名空间

headscale namespaces list

查看节点列表

headscale nodes list
  1. Linux客户端接入

拉取文件

wget https://pkgs.tailscale.com/stable/tailscale_1.22.2_amd64.tgz

解压

tar zxvf tailscale_1.22.2_amd64.tgz

将二进制文件复制到官方软件包默认的路径下

  1. cp tailscale_1.22.2_amd64/tailscaled /usr/sbin/tailscaled
  2. cp tailscale_1.22.2_amd64/tailscale /usr/bin/tailscale

将 systemD service 配置文件复制到系统路径下

cp tailscale_1.22.2_amd64/systemd/tailscaled.service /lib/systemd/system/tailscaled.service

环境变量配置文件复制到系统路径下

cp tailscale_1.22.2_amd64/systemd/tailscaled.defaults /etc/default/tailscaled

开启自启

systemctl enable --now tailscaled

查看状态

systemctl status tailscaled

接入headscale

  1. # 将 <HEADSCALE_PUB_IP> 换成你的 Headscale 公网 IP 或域名
  2. tailscale up --hostname=<节点名称> --login-server=http://<HEADSCALE_PUB_IP>:8080 --accept-routes=true --accept-dns=false

执行完上面命令后,会出现

  1. To authenticate, visit:
  2. http://xxxxxx:8080/register?key=905cf165204800247fbd33989dbc22be95c987286c45aac303393704
  3. 1150d846

在浏览器打开会出现,注册节点的命令,如下

  1. #USERNAME 为在服务端创建namespace
  2. headscale nodes register --user USERNAME --key nodekey:08ec6e3c50b218fb63decc7636420129b758aa44873b67c83c9041a06699a566

在服务器端执行该命令即可

  1. windows客户端接入

在浏览器打开地址:服务端的ip:端口/windows,例如http://1.1.1.1:9000/windows

按照步骤在cmd下执行即可

然后用客户端登录,连接字符串在服务端注册

  1. 打通局域网

客户端命令

  1. echo 'net.ipv4.ip_forward = 1' | tee /etc/sysctl.d/ipforwarding.conf
  2. echo 'net.ipv6.conf.all.forwarding = 1' | tee -a /etc/sysctl.d/ipforwarding.conf
  3. sysctl -p /etc/sysctl.d/ipforwarding.conf

重新接入headscale,添加参数 --advertise-routes=192.168.100.0/24 --reset

  1. # 将 <HEADSCALE_PUB_IP> 换成你的 Headscale 公网 IP 或域名
  2. tailscale up --hostname=<节点名称> --login-server=http://<HEADSCALE_PUB_IP>:8080 --accept-routes=true --accept-dns=false --advertise-routes=192.168.100.0/24 --reset

服务端

  1. headscale routes list
  2. headscale routes enable -r 1 //1为 routes list 的id
  3. headscale routes disable -r 1 //删除路由

然后就可以 访问 那台客户端所在的局域网的所有ip了

如果异地的网段与本地的网段有冲突,还不知道怎么解决?

以上参考:https://icloudnative.io/posts/how-to-set-up-or-migrate-headscale

  1. headscale常用命令

  1. headscale namespace list # 查看所有的namespace
  2. headscale namespace create default # 创建namespace
  3. headscale namespace destroy default # 删除namespace
  4. headscale namespace rename default myspace # 重命名namespace
  5. headscale node list # 列出所有的节点
  6. headscale -n default node ls # 只查看namespace为default下的节点
  7. headscale node delete -i<ID> # 根据id删除指定的节点,这里面的id是node list查询出来的id
  8. # 参考headscale nodes delete -i=6
  9. headscale routes list -i 9 # 列出节点9的所有路由信息
  10. headscale routes enable -r 9 #将节点9的路由中信息为192.168.10.0/24的设置为true,
  11. # 这样除了虚拟内网ip,原先的内网ip网段为192.168.10的也能访问了
  12. # 后面的/24表示子网掩码是24个1,就是255.255.255.0
  13. # preauthkeys主要是方便客户端快速接入,创建了preauthkeys后客户端直接使用该key就可以直接加入namespace
  14. headscale -n default preauthkeys list # 查看名称为default的namespace中已经生成的preauthkeys
  15. headscale preauthkeys create -e 24h -n default # 给名称为default的namespace创建preauthkeys
  16. # apikeys是为了客户端和headscale做http鉴权用的,http请求的时候需要设置头部authorization
  17. # 值为固定的字符串"Bearer "加apikeys创建的key
  18. headscale.exe apikeys create # 创建apikeys,在创建的时候需要记录下完整的值,后续查询出来的都是prefix
  19. # 值类似于zs3NTt7G0w.pDWtOtaVx_mN9SzoM24Y02y6tfDzz5uysRHVxwJc1o4
  20. headscale.exe apikeys list -o=json #查询headscale的apikeys,并将结果输出成json格式

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号