Skip to content

介绍

平时用笔记本, 家里有 nas 服务器, 如何随时随地的访问呢?

将家里的 nas 与你的笔记本组合到同一个网络下, 就可以随时随地的访问

需要用到的软件是: easytier

它可以很方便的将两台机器组合到不同的网络下

txt
nas(11.11.11.1)        -> relayserver -> macbookpro(11.11.11.2)
macbookpro(11.11.11.2) -> relayserver -> nas(11.11.11.1)

目的让两台设备可以互相 ping 通, 我们发现中间有个关键的因素就是中继服务器(relayserver)
1. 它们3台设备用到的软件都是一样的, 只是配置文件有所不同
2. 由于用到的软件是一样的, 所以直接全部用同样的 docker-compose.yaml 启动镜像即可
3. 注意配置文件不同, 所以请重点观察配置文件细节

docker-compose 启动 easytier

不管是 nas/relayserver/mac 都是一样的启动方式,

如果你喜欢 GUI 的方式, 那么也可以去官网下载GUI客户端

yaml
services:
   easytier:
     image: easytier/easytier:latest
     hostname: easytier
     container_name: easytier
     restart: unless-stopped
     network_mode: host
     cap_add:
       - NET_ADMIN
       - NET_RAW
     environment:
       - TZ=Asia/Shanghai
     devices:
       - /dev/net/tun:/dev/net/tun
     volumes:
       - /etc/machine-id:/etc/machine-id:ro
       - ./config:/etc/easytier             # 将配置文件映射到容器内
     command: -c /etc/easytier/config.toml  # 注意配置文路径

目录结构应该如下:

txt
.
├── config
│   └── config.toml
└── docker-compose.yaml

1 directory, 2 files

配置

注意这台机器需要公网 ip, 让 nas 和 mac 都能访问到

假设公网ip为: 35.200.190.100, 那么它的配置文件应该如下:

toml
instance_name = "relay-server"                     # 当前设备在私网中的标识符
listeners = [
	"tcp://0.0.0.0:11010",
	"udp://0.0.0.0:11010",
	"wg://0.0.0.0:11011",
]

[network_identity]
network_name = "ezvpn"                              # 私有网络名称
network_secret = "5ebe2294ecd0e0f08eab7690d2a6ee69" # 私有网络密码

[vpn_portal_config]
client_cidr = "11.11.11.0/24"
wireguard_listen = "0.0.0.0:11011" # 开启 wireguard 监听

[flags]
latency_first = true
private_mode = true
multi_thread_count = 4
enable_udp_broadcast_relay = true
relay_network_whitelist = "eznetvpn"
relay_all_peer_rpc = true
# hostname = "easytierrelay.example.com" # 如果服务器公网ip绑定了域名可以设置
toml
instance_name = "home-nas"                           # 设备标识符
ipv4 = "11.11.11.1"                                  # nas 的私网ip
listeners = []

[network_identity]
network_name = "ezvpn"                               # 注意私网名称要与中继服务器相同
network_secret = "5ebe2294ecd0e0f08eab7690d2a6ee69"  # 注意私网密码要与中继服务器相同

[vpn_portal_config]                                  # 允许使用 wireguard 协议链接
client_cidr = "11.11.11.0/24"
wireguard_listen = "0.0.0.0:11011"

[[peer]]
uri = "tcp://35.200.190.100:11010"                   # tcp链接中继服务器

[[peer]]
uri = "udp://35.200.190.100:11010"                   # udp链接中继服务器

[[peer]]
uri = "wg://35.200.190.100:11011"                    # wg协议链接中继服务器

[flags]
latency_first = true
private_mode = true
multi_thread_count = 4
enable_udp_broadcast_relay = true
toml
instance_name = "macbookpro"                         # 设备标识符
ipv4 = "11.11.11.2"                                  # mac 的私网 ip
listeners = []

[network_identity]
network_name = "ezvpn"                               # 注意私网名称要与中继服务器相同
network_secret = "5ebe2294ecd0e0f08eab7690d2a6ee69"  # 注意私网密码要与中继服务器相同

[vpn_portal_config]                                  # 允许使用 wireguard 协议链接
client_cidr = "11.11.11.0/24"
wireguard_listen = "0.0.0.0:11011"

[[peer]]
uri = "tcp://35.200.190.100:11010"                   # tcp链接中继服务器

[[peer]]
uri = "udp://35.200.190.100:11010"                   # udp链接中继服务器

[[peer]]
uri = "wg://35.200.190.100:11011"                    # wg协议链接中继服务器

[flags]
latency_first = true
private_mode = true
multi_thread_count = 4
enable_udp_broadcast_relay = true

效果预览

我配置时的ip与写笔记时稍有不同, 不过原理是一样的, 没影响

  • 命令行:
sh
~ $ ping 10.10.10.11
PING 10.10.10.11 (10.10.10.11): 56 data bytes
64 bytes from 10.10.10.11: icmp_seq=0 ttl=64 time=27.347 ms
64 bytes from 10.10.10.11: icmp_seq=1 ttl=64 time=27.106 ms
64 bytes from 10.10.10.11: icmp_seq=2 ttl=64 time=30.939 ms
^C
--- 10.10.10.11 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 27.106/28.464/30.939/1.753 ms
  • MacGUI 客户端:

Released under the MIT License.