headscale的部署方法和使用教程

这篇具有很好参考价值的文章主要介绍了headscale的部署方法和使用教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. headscale文件下载

# 下载地址 尽量选择新版本下载
https://github.com/juanfont/headscale/tags

headscale的部署方法和使用教程
linux机器下载上图选中文件
或者使用命令下载

 wget --output-document=/usr/local/bin/headscale \
   https://github.com/juanfont/headscale/releases/download/v<HEADSCALE VERSION>/headscale_<HEADSCALE VERSION>_linux_<ARCH>

< HEADSCALE VERSION> 为版本号
< ARCH> 为支持平台

2. 上传并赋予文件权限

上传 headscale_xxxx_linux_xxx 文件到服务器/usr/local/bin目录下并重命名为headscale
并赋予文件权限
服务器使用命令下载的无需上传

chmod +x /usr/local/bin/headscale

3. 创建以及修改相关配置文件

3.1 创建配置目录:

mkdir -p /etc/headscale

3.2 创建目录用来存储数据与证书:

mkdir -p /var/lib/headscale

3.3 创建空的 SQLite 数据库文件:

touch /var/lib/headscale/db.sqlite

3.4 创建 Headscale 配置文件:

# 下载官方的配置文件
wget https://github.com/juanfont/headscale/raw/main/config-example.yaml -O /etc/headscale/config.yaml
  • 修改配置文件,将 server_url 改为公网 IP 或域名。如果是国内服务器,域名必须要备案。我的域名无法备案,所以我就直接用公网 IP 了。

  • server_url 设置为 http://<PUBLIC_IP>:8080,将 <PUBLIC_IP> 替换为公网 IP 或者域名。

  • 若是listen_addr为127.0.0.1:8080,需要改为listen_addr: 0.0.0.0:8080,监听本地,后期url访问将会无效。

  • 如果暂时用不到 DNS 功能,可以先将 magic_dns 设为 false。

  • 可自定义私有网段,也可同时开启 IPv4 和 IPv6:

ip_prefixes:
  # - fd7a:115c:a1e0::/48
  - 10.1.0.0/16

3.5 创建 SystemD service 配置文件:

本人使用官网的的.service无法访问,就不再创建headscale用户和用户组,直接进行启动,所以跳过3.6,3.7步,也将 User,Group,NoNewPrivileges,PrivateTmp,ProtectSystem,ProtectHome,AmbientCapabilities 等参数给注释掉了;这一点自己看需要调整,下图的几个参数都是可选的,不一定需要。

headscale的部署方法和使用教程

# /etc/systemd/system/headscale.service
[Unit]
Description=headscale controller
After=syslog.target
After=network.target

[Service]
Type=simple
#User=headscale
#Group=headscale
ExecStart=/usr/local/bin/headscale serve  
Restart=always
RestartSec=5

# Optional security enhancements
#NoNewPrivileges=yes
#PrivateTmp=yes
#ProtectSystem=strict
#ProtectHome=yes
ReadWritePaths=/var/lib/headscale /var/run/headscale
#AmbientCapabilities=CAP_NET_BIND_SERVICE
RuntimeDirectory=headscale

[Install]
WantedBy=multi-user.target

3.6 创建 headscale 用户

useradd headscale -d /home/headscale -m

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

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

3.8 修改配置文件中的 unix_socket

进入配置文件

vim /etc/headscale/config.yaml
unix_socket: /var/run/headscale/headscale.sock

4 启动及运行

4.1 Reload SystemD 以加载新的配置文件:

systemctl daemon-reload

4.2 启动 Headscale 服务并设置开机自启:

systemctl enable --now headscale

4.3 查看运行状态:

systemctl status headscale

4.4 查看占用端口:

 ss -tulnp|grep headscale

Tailscale 中有一个概念叫 tailnet,你可以理解成租户,租户与租户之间是相互隔离的,具体看参考 Tailscale 的官方文档: What is a tailnet。Headscale 也有类似的实现叫 namespace,即命名空间。我们需要先创建一个 namespace,以便后续客户端接入,例如:

 headscale namespaces create default

4.5 查看命名空间:

headscale namespaces list
ID | Name | Created
1 | default | 2022-03-09 06:12:06

4.6 查看、删除节点:

#查看
headscale nodes list
#删除
headscale nodes delete -i <节点id>

5 客户端接入

目前除了 iOS 客户端,其他平台的客户端都有办法自定义 Tailscale 的控制服务器。

OS 是否支持 Headscale
Linux Yes
OpenBSD Yes
FreeBSD Yes
macOS Yes
Windows Yes 参考 Windows 客户端文档
Android 需要自己编译客户端
iOS 暂不支持

官方静态编译的二进制文件

5.1 linux 接入

5.1.1下载

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

版本号可以自行更换,版本号查看

headscale的部署方法和使用教程

5.1.2 解压

tar zxvf tailscale_1.22.2_amd64.tgz

解压后目录

tailscale_1.22.2_amd64/
tailscale_1.22.2_amd64/tailscale
tailscale_1.22.2_amd64/tailscaled
tailscale_1.22.2_amd64/systemd/
tailscale_1.22.2_amd64/systemd/tailscaled.defaults
tailscale_1.22.2_amd64/systemd/tailscaled.service

5.1.3 将二进制文件复制到官方软件包默认的路径下,并赋予可以执行文件权限

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

赋予执行文件权限

chmod +x /usr/sbin/tailscaled
chmod +x /usr/bin/tailscale

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

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

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

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

5.1.6 刷新服务启动并设置开机自启

systemctl daemon-reload

systemctl enable --now tailscaled

systemctl status tailscaled

5.1.7 Tailscale 接入 Headscale

# 将 <HEADSCALE_PUB_IP> 换成自己的 Headscale 公网 IP 或域名
tailscale up --login-server=http://<HEADSCALE_PUB_IP>:8080 --accept-routes=true --accept-dns=false

这里推荐将 DNS 功能关闭,因为它会覆盖系统的默认 DNS。如果你对 DNS 有需求,可自己研究官方文档,这里不再赘述。

执行完上面的命令后,会出现下面的信息:

To authenticate, visit:

http://xxxxxx:8080/register?key=905cf165204800247fbd33989dbc22be95c987286c45aac303393704

1150d846

在浏览器中打开该链接,就会出现如下的界面:
headscale的部署方法和使用教程
将其中的命令复制粘贴到 headscale 所在机器的终端中,并将 NAMESPACE 替换为前面所创建的 namespace。

headscale -n NAMESPACE nodes register --key 905cf165204800247fbd33989dbc22be95c987286c45aac3033937041150d846
Machine register

注册成功,查看注册的节点:

headscale nodes list

ID | Name | NodeKey | Namespace | IP addresses | Ephemeral | Last seen | Onlin

e | Expired

1 | coredns | [Ew3RB] | default | 10.1.0.1 | false | 2022-03-20 09:08:58 | onlin

e | no

回到 Tailscale 客户端所在的 Linux 主机,可以看到 Tailscale 会自动创建相关的路由表和 iptables 规则。路由表可通过以下命令查看:

ip route show table 52

查看 iptables 规则:

 iptables -S
-P INPUT DROP
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N ts-forward
-N ts-input
-A INPUT -j ts-input
-A FORWARD -j ts-forward
-A ts-forward -i tailscale0 -j MARK --set-xmark 0x40000/0xffffffff
-A ts-forward -m mark --mark 0x40000 -j ACCEPT
-A ts-forward -s 100.64.0.0/10 -o tailscale0 -j DROP
-A ts-forward -o tailscale0 -j ACCEPT
-A ts-input -s 10.1.0.5/32 -i lo -j ACCEPT
-A ts-input -s 100.115.92.0/23 ! -i tailscale0 -j RETURN
-A ts-input -s 100.64.0.0/10 ! -i tailscale0 -j DROP

$ iptables -S -t nat
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A ts-postrouting -m mark --mark 0x40000 -j MASQUERADE

5.2 macos 接入

macOS 有 3 种安装方法:

直接通过应用商店安装,地址: https://apps.apple.com/ca/app/tailscale/id1475387142。前提是你需要一个美区 ID。
下载 安装包直接安装,绕过应用商店。
安装开源的命令行工具 tailscale 和 tailscaled。相关链接: https://github.com/tailscale/tailscale/wiki/Tailscaled-on-macOS。
这三种安装包的核心数据包处理代码是相同的,唯一的区别在于在于打包方式以及与系统的交互方式。

应用商店里的应用运行在一个 应用沙箱中,与系统的其他部分隔离。在沙箱内,应用可以是一个 网络扩展,以实现 VPN 或者类 VPN 的功能。网络扩展实现的功能对应用商店之外的应用是无法生效的。

从 macOS 从 10.15 开始新增了 系统扩展,说白了就是运行在用户态的内核扩展,它相比于传统的网络扩展增强了很多功能,比如内容过滤、透明代理、DNS 代理等。Tailscale 独立于应用商店的安装包使用的就是系统扩展,通过 DMG 或者 zip 压缩包进行分发。
相关对比参考

5.2.1 下载

下载地址
解压出来后,将xxxxx.app拖入应用程序里

5.2.2 下载并修改配置文件

Headscale 已经给我们提供了详细的操作步骤,你只需要在浏览器中打开 URL:http://<HEADSCALE_PUB_IP>:8080/apple,便会出现如下的界面:
headscale的部署方法和使用教程
如下图
headscale的部署方法和使用教程
使用文本编辑器打开并修改下载的配置文件:

非应用商店版本的 macOS 客户端需要将 io.tailscale.ipn.macos 替换为 io.tailscale.ipn.macsys

安装配置文件
打开设置,搜索配置文件,进行安装headscale配置文件,安装结束后。
搜索隐私和安全性,允许tailscale运行。

5.2.3 退出重启tailscale,并login

改完成后重启 Tailscale 客户端,在 macOS 顶部状态栏中找到 Tailscale 并点击,然后再点击 Log in。

headscale的部署方法和使用教程然后立马就会跳转到浏览器并打开一个页面。
若没有跳出以下界面,可能是在设置中的隐私和安全性,没有允许tailscale运行。去设置先允许,在退出重新login。

headscale的部署方法和使用教程
接下来与之前 Linux 客户端相同,回到 Headscale 所在的机器执行浏览器中的命令即可,注册成功:
headscale的部署方法和使用教程
回到 Headscale 服务器主机,查看注册的节点:

headscale nodes list

ID | Name | NodeKey | Namespace | IP addresses | Ephemeral | Last seen | Onlin

e | Expired

1 | coredns | [Ew3RB] | default | 10.1.0.1 | false | 2022-03-20 09:08:58 | onlin

e | no
2 | carsondemacbook-pro | [k7bzX] | default   | 10.1.0.2     | false     | 2022-03-20 09:48:30 | online  | no

回到 macOS,测试是否能 ping 通对端节点:

ping -c 2 10.1.0.1
PING 10.1.0.1 (10.1.0.1): 56 data bytes
64 bytes from 10.1.0.1: icmp_seq=0 ttl=64 time=37.025 ms
64 bytes from 10.1.0.1: icmp_seq=1 ttl=64 time=38.181 ms

--- 10.1.0.1 ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 37.025/37.603/38.181/0.578 ms

也可以使用 Tailscale CLI 来测试:

/Applications/Tailscale.app/Contents/MacOS/Tailscale ping 10.1.0.1
pong from coredns (10.1.0.1) via xxxx:41641 in 36ms

其他相关的接入方式可以参考点击跳转

若有机会,后期我会继续完善文章来源地址https://www.toymoban.com/news/detail-447660.html

到了这里,关于headscale的部署方法和使用教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用Linux部署Kafka教程

    目录 一、部署Zookeeper 1、创建一个网络 2、拉取Zookeeper镜像 3、运行Zookeeper 二、部署Kafka 1、拉取Kafka镜像 2、运行Kafka 三、kafka-map图形化管理工具  四、验证是否部署成功 五、SpringBoot整合Kafka  1、导入依赖 2、修改配置 3、生产者 4、消费者 5、测试发送消息 6、测试收到消息

    2024年02月11日
    浏览(20)
  • ceph部署和使用详细教程

    Ceph项目最早起源于Sage就读博士期间的工作(最早的成果于2004年发表),并随后贡献给开源社区。在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用。RedHat及OpenStack都可与Ceph整合以支持虚拟机镜像的后端存储。但是在2014年OpenStack火爆的时候、Ceph并不

    2023年04月09日
    浏览(30)
  • Fabric自动化部署使用教程

    Fabric自动化部署的使用教程可以按照以下步骤进行: 安装Fabric :首先,确保你的系统中已经安装了Python,然后可以通过pip命令来安装Fabric,执行 pip install fabric 即可1。 创建fabfile.py :在项目根目录下创建一个名为 fabfile.py 的文件。这个文件将包含所有自动化部署的任务定义

    2024年02月21日
    浏览(22)
  • 使用nginx部署前端项目(超详细教程)

    (所使用前端模版已经上传到个人资源,各位敬请免费领取) 所有文章不设限,我们相遇偶然,相散坦然,互不打扰,各自安好,向阳而生 直接安装报错复现 解释: Nginx在CentOS官方软件仓库中不可用,但它在EPEL (额外的CentOS软件包)软件仓库中可用,因此安装前需要先安装

    2024年02月15日
    浏览(40)
  • 阿里云服务器安装部署Docker使用教程

    本文阿里云百科分享如何在云服务ECS实例上,部署并使用Docker。Docker是一款开源的应用容器引擎,具有可移植性、可扩展性、高安全性和可管理性等优势。开发者可将应用程序和依赖项打包到一个可移植的容器中,快速发布到Linux机器上并实现虚拟化,实现更高效地构建、部

    2024年02月09日
    浏览(41)
  • 使用阿里云一键部署 幻兽帕鲁服务器 菜鸟教程 一键快速部署

    本文通过介绍如何 从购买阿里云服务器(windows系统)、到一键傻瓜式快速部署、再到连接到帕鲁服务器,简介明了,易上手,没相关专业知识的游戏玩家也能一键傻瓜式搭建服务器环境。 背景:最近很火爆的游戏《幻兽帕鲁》在Steam 在线峰后,没几日最大DAU破百万,成为

    2024年02月22日
    浏览(44)
  • 如何使用Docker部署Nacos服务?Nacos Docker 快速部署指南: 一站式部署与配置教程

    🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页 ——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文并茂🦖生动形象🐅简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍专栏》 🐾 学会IDEA常用操作,工作效率翻倍~💐 🌊 《100天精通Golang(基础

    2024年02月09日
    浏览(70)
  • Linux 环境下使用 Docker 部署 Java 项目教程

    1. 安装 Docker:首先在 Linux 系统上安装 Docker,可以参考 Docker 官方文档进行安装。 2. 构建 Docker 镜像:将 Java 项目打包成 Jar 文件,并编写 Dockerfile 文件,使用 Dockerfile 文件构建 Docker 镜像。 dockerfile 文件内容如下:    FROM openjdk:8-jdk-alpine    VOLUME /tmp    ADD your-project-name

    2024年02月09日
    浏览(25)
  • Notion 开源替代品 AFFINE 部署和使用教程

    AFFiNE 是一款完全开源的 Notion + Miro 替代品,与 Notion 相比,AFFiNE 更注重隐私安全,优先将笔记内容保存到本地。 GitHub 地址:https://github.com/toeverything/AFFiNE AFFiNE 使用 Rust 和 Typescript 构建,只需要一个命令即可运行整个项目,AFFiNE 以最简单的方式给了所有开发者最大的想象力

    2024年04月09日
    浏览(34)
  • Docker部署nextcloud及其使用方法

    Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用沙箱机制,相互之间不会有任何接口(类似

    2024年02月10日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包