安装 客户端

一键安装脚本

curl -fsSL https://tailscale.com/install.sh | sh

配置 IP 转发

如果 Linux 系统有 /etc/sysctl.d 目录,执行

echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf
如果 Linux 系统没有 /etc/sysctl.d 目录,执行

echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p /etc/sysctl.conf
如果防火墙使用的 firewalld ,执行

firewall-cmd --permanent --add-masquerade

启动

sudo tailscale up \
--advertise-routes=192.168.0.0/24,192.168.1.0/24 \ # 路由到此设备的网段
--accept-routes \ # 接收其他设备的子网,不添加只能访问其他设备的100.x.x.x
--advertise-exit-node \ # 出口节点
--accept-dns=false \ # 禁用Tailscale的DNS
--reset \ # 重置设置
按需将上例中的子网替换为实际网络的子网。支持 IPv4 和 IPv6 子网

⚠️纯粹的 Linux 客户端 (如 armbian 的玩客云),只要能访问其他组网设备,其他设备能通过 100.x.x.x 访问到此      客户端
  tailscale up --accept-dns=false #--reset
  # --accept-routes 会导致无法外部无法ssh到设备,不使用的代价无法请求其他设备的子网

以上参考信息来源:https://blog.nipx.cn/pages/17a0b1/#前言

**
Tailscale 的 ACL简易指南
Tailscale ACL 访问控制策略完全指南!https://cloud.tencent.com/developer/article/2207535
此文写的比较好
**

在 Tailscale 的控制介面中,你可以點選上面的 Access controls,他就是 ACL,打開可以看到畫面
groups

定義一個群組的用戶,你可以在每個組別加入很多使用者,這樣之後再寫 ACL 的時候,就不用重複再寫這麼多用戶了。

{
"groups": {

  "group:example": ["alice@example.com", "bob@example.com"],

}
}
Copy
hosts

一個簡易取代 IP 位址的方式。例如在此範例中我們定義了 test1 等於 100.100.100.1,之後我們在配置 ACL 時,就可以直接使用 test1 就好,而無須輸入整段 IP 位址,那樣很累。

{

"hosts": {
    "test1": "100.100.100.1",
    "test2": "100.100.100.2",
},

}
Copy
tagOwners

他就是標籤,我們可以在這邊定義這個標籤是屬於哪個用戶擁有的。之後配發權限以及配置 ACL 就會更加容易。

{

"tagOwners": {
    "tag:example": ["autogroup:admin"],
}

}
Copy
acls

這裡就是整個 ACL 最重要的段落。他可以控制特定用戶只能連向哪裡。在你還沒更改 acls 內容之前,他會直接添加下面範例的內容,這句話就是指 允許任何人連往任何地方。

注意:Tailscale 是白名單機制,他預設不允許任何人連往任何地方的,因此只需要在此段落添加允許清單。

{

"acls": [
    {"action": "accept", "src": [""], "dst": [":*"]},
],

}
Copy
ssh

Tailscale 有內建他自己的 SSH,他可以在這邊設定訪問權限。更多有關於 Tailscale SSH 的用途,請參考 這裡。但我是沒在使用啦哈哈,所以我是拿掉的。

{

"ssh": [
    {
        "action": "check",
        "src":    ["autogroup:members"],
        "dst":    ["autogroup:self"],
        "users":  ["autogroup:nonroot", "root"],
    },
],

}
Copy
tests

tests 是用來檢查錯誤用的,他將每次都會執行。你可以在此定義一些規則,例如:誰可以連往這台主機。那當你在上方的其他欄位不小心設定的錯誤的權限,導致不是你預期的結果,那他就會告訴你你設定有誤。

{

"tests": [
    {
        "src": "alice@example.com",
        "accept": ["tag:example"],
        "deny": ["100.101.102.103:443"],
    },
],

}
Copy
上手實作见https://blog.cre0809.com/archives/516/

最后修改:2025 年 05 月 13 日
如果觉得我的文章对你有用,请随意赞赏