当前位置:   article > 正文

Tailscale和Headscale安装手册_headscale docker

headscale docker

场景

如何不通过内网穿透形式就能远程访问任何一台服务器,如:docker网络、k8s网关等、设备互联等,并且可以随意使用这些网关下服务器的端口服务,如:Mysql、Redis、Flink等

需求

  • 局域网A(家庭):家里闲置服务器 192.168.178.110-113 、 路由器192.168.178.1 ;
  • 局域网B:我的macbook pro 10.8.99.45;

beoXra

tip: 图中100.x.y.z为macbook pro代理服务器(proxy)公司电脑(main)组网后的ip,图中192.168.0.x,为本例局域网A192.168.178.x内部设备局域网ip

假设家庭内网有一台代理服务器(proxy)安装了 Tailscale 客户端,我们希望其他 Tailscale 客户端macbook pro公司电脑(main)可以直接通过家中的局域网 IP段(例如 192.168.178.0/24)访问家庭内网的任何一台设备,

我们来尝试实现组网后macbook pro 10.8.99.45访问我的路由器192.168.178.1

必要准备

  • 一台带宽良好的公共服务器资源,最好 8mbps左右,并且有公网Ip
  • 家里代理服务器一台

安装 Headscale 服务端

安装在一台具有公网IP地址的Linux服务器,例如公有云的云主机

mkdir -p /data/headscale/config
cd /data/headscale
  • 1
  • 2

在 headscale 目录中创建一个空的 SQlite 数据库:

touch ./config/db.sqlite
  • 1

从headscale 存储库下载示例配置的副本(强烈推荐)。

wget -O ./config/config.yaml https://raw.githubusercontent.com/juanfont/headscale/main/config-example.yaml
  • 1

修改配置文件,其中your-host-name 需要设置为服务器公网IP地址:

server_url: http://${your-host-name}:8080
metrics_listen_addr: 0.0.0.0:9090
private_key_path: /etc/headscale/private.key
db_path: /etc/headscale/db.sqlite
  • 1
  • 2
  • 3
  • 4

在主机 headscale 目录中工作时启动 headscale 服务器:

docker run -d --name headscale   --restart always   -v /data/headscale/config:/etc/headscale/   -p 8080:8080   -p 9090:9090   headscale/headscale:0.21 headscale serve
  • 1

验证正在运行的容器:

root@centos-vm:~# docker ps

CONTAINER ID   IMAGE                             COMMAND             CREATED        STATUS        PORTS                                                                                  NAMES
d1d9cd29c469   headscale/headscale:0.21   "headscale serve"   8 weeks ago    Up 5 hours    0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:9090->9090/tcp, :::9090->9090/tcp   headscale
  • 1
  • 2
  • 3
  • 4

验证headscale是否可用:

root@centos-vm:~# curl http://127.0.0.1:9090/metrics

# HELP gin_request_duration_seconds The HTTP request latencies in seconds.
# TYPE gin_request_duration_seconds summary
gin_request_duration_seconds_sum 0
gin_request_duration_seconds_count 0
# HELP gin_request_size_bytes The HTTP request sizes in bytes.
# TYPE gin_request_size_bytes summary
gin_request_size_bytes_sum 0
gin_request_size_bytes_count 0
# HELP gin_response_size_bytes The HTTP response sizes in bytes.
# TYPE gin_response_size_bytes summary
.....
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

创建一个命名空间:

docker exec headscale \
  headscale namespaces create myfirstnamespace
  • 1
  • 2

创建一个用户:

docker exec headscale \
  headscale users create zy
  • 1
  • 2

生成认证key并查看生成的 authkey,这样方便直接免密登录

root@centos-vm:~/# docker exec headscale   headscale --namespace myfirstnamespace preauthkeys -u zy create --reusable --expiration 24h
fc42723daaxxxxxxxxxxxxxx00d69ddbad3d5afd0bd5
  • 1
  • 2

代理(Proxy)服务器客户端搭建

  • 安装 tailscale

     curl -fsSL https://tailscale.com/install.sh | sh
    
    • 1
  • 修改配置让其支持 IPv4 与 IPv6 路由转发,在如下目录下

    /etc/sysctl.conf 
    
    • 1

    中增加

    net.ipv4.ip_forward=1
    net.ipv6.conf.all.forwarding=1
    
    • 1
    • 2
  • 开启tailscale并设置

    --advertise-routes
    
    • 1

    让其打通局域网内部的路由访问,这个网段的所有设备都可以被访问

    tailscale up --accept-dns=false --advertise-routes=192.168.178.0/24 --login-server=http://<ip>:8080 
    
    • 1

    或者直接使用之前授权的 authkey 直接登录

    tailscale up --accept-dns=false --advertise-routes=192.168.178.0/24 --login-server=http://<ip>:8080 --authkey fc42723daaxxxxxxxxxxxxxx00d69ddbad3d5afd0bd5
    
    • 1
  • headscale服务端设置

    在 headscale 端查看路由,可以看到相关路由是关闭的。

    root@centos-vm:~/# docker exec -it headscale headscale nodes list
    ID | Hostname       | Name           | MachineKey | NodeKey | User | IP addresses                  | Ephemeral | Last seen           | Expiration          | Online  | Expired
    4  | porxy          | porxy          | [fTWM2]    | [PHckt] | zy   | 100.64.0.1, fd7a:115c:a1e0::1 | false     | 2023-04-07 02:09:05 | 0001-01-01 00:00:00 | online  | no 
    
    root@centos-vm:~/# docker exec -it headscale headscale routes list 
    ID | Machine | Prefix           | Advertised | Enabled | Primary
    1  | porxy   | 192.168.178.0/24 | true       | false    | false   
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    开启路由:

    docker exec -it headscale headscale routes enable -r 1
    
    ID | Machine | Prefix           | Advertised | Enabled | Primary
    1  | porxy   | 192.168.178.0/24 | true       | true    | true   
    
    • 1
    • 2
    • 3
    • 4

官方文档:Subnet routers and traffic relay nodes

现在你在任何一个 Tailscale 客户端所在的节点都可以 ping 通家庭内网的机器了
我们试试用macbook pro 10.8.99.45访问我的路由器192.168.178.1

image-20230407101640237.png

其他客户端连接

Windows

http://:8080/windows

Mac

http://:8080/apple

Tailscale 连接指令参考

tailscale up --accept-dns=false --accept-routes --login-server=http://<headscale-ip>:8080 --authkey fc42723daaxxxxxxxxxxxxxx00d69ddbad3d5afd0bd5
  • 1

参考资料

组件官网

资料来源

  • http://junyao.tech/posts/a5fad85a.html
  • https://blog.csdn.net/networken/article/details/126460277
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/365222
推荐阅读
相关标签
  

闽ICP备14008679号