Tailscale 中转服务器的搭建
Tailscale
提供的 relays
数量有限,而且全部在国外。你也可以自建中继。自建中继服务器被称为 derper
,
搭建中转服务器默认是需要证书的,
您必须对 HTTP 使用端口 TCP 80。默认情况下,HTTPS 在端口 443 上运行,STUN 在端口 3478 上运行。
-
HTTPS:服务端口,TCP
-
STUN:打洞端口,UDP
name: ip_derper
services:
derper:
image: yujibuzailai/ip_derper
container_name: ip_derper
restart: always
network_mode: "host"
volumes:
#Config file path
# - './start.sh:/app/start.sh'
- '/var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock'
environment:
- DERP_PORT=5443 # derper运行端口
- DERP_STUN=true # 是否开启stun,默认开启
- DERP_STUN_PORT=3478 # stun端口,默认3478
- DERP_VERIFY_CLIENTS=true # 开启防止白嫖,本机需要先加入tailscale节点,虽然对于ip没用
# ports:
# - '3478:3478/udp'
# - '50443:443'
📌 打开tailscale的网页console,在access control里的 'ssh' 之前粘贴以下内容:
"derpMap": {
"OmitDefaultRegions": true, //禁用其他中转服务器
"Regions": {
"901": {
"RegionID": 901,
"RegionCode": "Myself",
"RegionName": "Myself Derper",
"Nodes": [
{
"Name": "阿里云-深圳",
"RegionID": 901,
"DERPPort": 5443, //服务器的端口
"IPv4": "1.1.1.1", //服务器的IP
//"IPv6": "IP地址", 中转服务器的ipv6地址
"InsecureForTests": true,
},
//多个服务器
{
"Name": "美国-洛杉矶-9929",
"RegionID": 901,
"DERPPort": 5443, //服务器的端口
"IPv4": "2.2.2.2", //服务器的IP
//"IPv6": "IP地址", 中转服务器的ipv6地址
"InsecureForTests": true,
},
],
},
},
},
测试连通性
下载tailscale linux客户端
curl -fsSL https://tailscale.com/install.sh | sh
查看tailscale客户端是否连接中转服务器
tailscale netcheck
查看状态
tailscale status
-
ipv6的支持
"1": null, //纽约-美国 "2": null, //旧金山-美国 //"3": null, //新加坡 "4": null, //法兰克福-德国 "5": null, //悉尼-澳大利亚 "6": null, //班加罗尔-印度 //"7": null, //东京-日本 "8": null, //伦敦-英国 "9": null, //达拉斯-美国 "10": null, //西雅图-美国 "11": null, //圣保罗-巴西 "12": null, //芝加哥-美国 "13": null, //丹佛-美国 "14": null, //阿姆斯特丹-荷兰 "15": null, //約翰尼斯堡-南非 "16": null, //迈阿密-美国 //"17": null, //洛杉矶-美国 "18": null, //巴黎-法国 "19": null, //马德里-西班牙 //"20": null, //香港不禁用 "21": null, //多伦多-加拿大 "22": null, //华沙-波兰 "23": null, //杜拜-阿联酋 "24": null, //檀香山-美国 "25": null, //奈洛比-肯尼亚
完整配置
// Example/default ACLs for unrestricted connections.
{
// Declare static groups of users. Use autogroups for all users or users with a specific role.
// "groups": {
// "group:example": ["[email protected]", "[email protected]"],
// },
// Define the tags which can be applied to devices and by which users.
// "tagOwners": {
// "tag:example": ["autogroup:admin"],
// },
// Define access control lists for users, groups, autogroups, tags,
// Tailscale IP addresses, and subnet ranges.
"acls": [
// Allow all connections.
// Comment this section out if you want to define specific restrictions.
{"action": "accept", "src": ["*"], "dst": ["*:*"]},
// Allow users in "group:example" to access "tag:example", but only from
// devices that are running macOS and have enabled Tailscale client auto-updating.
// {"action": "accept", "src": ["group:example"], "dst": ["tag:example:*"], "srcPosture":["posture:autoUpdateMac"]},
],
// Define postures that will be applied to all rules without any specific
// srcPosture definition.
// "defaultSrcPosture": [
// "posture:anyMac",
// ],
// Define device posture rules requiring devices to meet
// certain criteria to access parts of your system.
// "postures": {
// // Require devices running macOS, a stable Tailscale
// // version and auto update enabled for Tailscale.
// "posture:autoUpdateMac": [
// "node:os == 'macos'",
// "node:tsReleaseTrack == 'stable'",
// "node:tsAutoUpdate",
// ],
// // Require devices running macOS and a stable
// // Tailscale version.
// "posture:anyMac": [
// "node:os == 'macos'",
// "node:tsReleaseTrack == 'stable'",
// ],
// },
// 自定义配置开始
"randomizeClientPort": true, //这里强烈建议设定为true,贴配置主要就是为了贴它,莫名其妙的打洞失败多少跟它有些关系
"derpMap": {
//"OmitDefaultRegions": true, //这句控制官方derper是否启用,false是启用官方derper,除非特别自信,否则千万不要设置为true
"Regions": {
"901": {
"RegionID": 901, // tailscale 900-999 是保留给自定义 derper 的
"RegionCode": "Myself_NAS",
"RegionName": "Myself Derper NAS",
//"RegionScore": 0.1//魔法字段,填0~1之间的值会把本区域的derper服务器延迟缩小,比如我填0.1实际延迟是100ms时,后台排序算法会将其标记为10ms,从而实现优选某个区域的derper,一般用不到。当然填大于1的会将排序延迟放大,用来筛选不想使用的derper服务器。
"Nodes": [
{
"Name": "NAS",
"RegionID": 901,
//"HostName": "www.baidu.com",//填自签域名,tsl验证证书用,其实填IP也行,不过为了向后兼容建议填域名
"DERPPort": 6000, //服务器的端口
//"IPv4": "2.2.2.2", //HostName如果指定了自签域名,这里必须填上IP地址,否则它真的会去解析www.baidu.com
"IPv6": "240e:666:8888:8888:666:8888:8888:8888", //中转服务器的ipv6地址
//"IPv6": "nas.ddns.yjbzl.cn", //中转服务器的ipv6地址
"InsecureForTests": true, // 这个设置为true,客户端跳过验证
"STUNPort": 3478, //这里可以改,很多教程不让改,其实这个和上文derper服务里面的stunport对应上就可以
},
//{
// "Name": "美国-洛杉矶-9929",
// "RegionID": 901,
// "DERPPort": 5443, //服务器的端口
// "IPv4": "2.2.2.2", //服务器的IP
//"IPv6": "IP地址", 中转服务器的ipv6地址
// "InsecureForTests": true,
//},
],
},
"902": {
"RegionID": 902,
"RegionCode": "Myself_Aliyun",
"RegionName": "Myself Derper Aliyun",
"Nodes": [
{
"Name": "阿里云-深圳",
"RegionID": 902,
"DERPPort": 5443,
"IPv4": "1.1.1.1",
//"IPv6": "IP地址",
"InsecureForTests": true,
"STUNPort": 3478,
},
],
},
"903": {
"RegionID": 903,
"RegionCode": "Myself_US",
"RegionName": "Myself Derper 9929",
"Nodes": [
{
"Name": "美国-洛杉矶-9929",
"RegionID": 903,
"DERPPort": 50443,
"IPv4": "1.1.1.1",
//"IPv6": "IP地址",
"InsecureForTests": true,
"STUNPort": 3478,
},
],
},
"1": null, //纽约-美国
"2": null, //旧金山-美国
//"3": null, //新加坡
"4": null, //法兰克福-德国
"5": null, //悉尼-澳大利亚
"6": null, //班加罗尔-印度
//"7": null, //东京-日本
"8": null, //伦敦-英国
"9": null, //达拉斯-美国
"10": null, //西雅图-美国
"11": null, //圣保罗-巴西
"12": null, //芝加哥-美国
"13": null, //丹佛-美国
"14": null, //阿姆斯特丹-荷兰
"15": null, //約翰尼斯堡-南非
"16": null, //迈阿密-美国
//"17": null, //洛杉矶-美国
"18": null, //巴黎-法国
"19": null, //马德里-西班牙
//"20": null, //香港不禁用
"21": null, //多伦多-加拿大
"22": null, //华沙-波兰
"23": null, //杜拜-阿联酋
"24": null, //檀香山-美国
"25": null, //奈洛比-肯尼亚
},
},
// 自定义配置结束
// Define users and devices that can use Tailscale SSH.
"ssh": [
// Allow all users to SSH into their own devices in check mode.
// Comment this section out if you want to define specific restrictions.
{
"action": "check",
"src": ["autogroup:member"],
"dst": ["autogroup:self"],
"users": ["autogroup:nonroot", "root"],
},
],
// Test access rules every time they're saved.
// "tests": [
// {
// "src": "[email protected]",
// "accept": ["tag:example"],
// "deny": ["100.101.102.103:443"],
// },
// ],
}
启用验证
先让云服务器加入到tailscale网络中
评论区