想要拥有自己的大内网,但是却发现大部分设备都处于nat4网络中,p2p基本不可行

另外frp又过于繁琐,并且不加配置的话甚至导致数据明文传输

国内的公网服务器不备案又绑定不了域名也就开启不了https

个人背景:

  • 家庭网络为nat4

  • 拥有国内云服务商的公网服务器

  • 国内不备案难以配置https

  • 想要组建自己的大内网

  • 不能接受明文传输数据的协议

于是找到了一个方便安全地访问内网服务的方法:p2p打洞软件的另外一个功能:打洞不成功走中转

经过简单的对比,发现easytier自建节点最为简单(它的每个节点既能当服务端也能当客户端),也就是说,同一个docker镜像就涵盖了所有功能

这里说得比较简陋,建议直接参考easytier的官方文档

需要一台公网服务器(如果不是nat4可以直接用官方节点,这里主要用于中转而不是p2p打洞)

如果你有docker,同一份镜像就可以既当客户端又当服务端,只需改动docker compose文件中最后一行命令,如下

    command: -d --network-name <用户> --network-secret <密码> -p tcp://public.easytier.cn:11010 #客户端配置

下面是以私有模式启动自建节点,也可以不加--private-mode true作为公共节点给别人使用😋

    command: --private-mode true --network-name <网络名字> --network-secret <密码> #服务端配置

使用docker compose即可快速部署即插即用(建议去官方文档复制,避免时效性问题)

services:
  watchtower: # 用于自动更新easytier镜像,若不需要请删除这部分
    image: containrrr/watchtower
    container_name: watchtower
    restart: unless-stopped
    environment:
      - TZ=Asia/Shanghai
      - WATCHTOWER_NO_STARTUP_MESSAGE
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    command: --interval 3600 --cleanup --label-enable
  easytier:
    image: easytier/easytier:latest # 国内用户可以使用 m.daocloud.io/docker.io/easytier/easytier:latest
    hostname: easytier
    container_name: easytier
    labels:
      com.centurylinklabs.watchtower.enable: 'true'
    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/easytier:/root
      - /etc/machine-id:/etc/machine-id:ro # 映射宿主机机器码
    command: -d --network-name <用户> --network-secret <密码> -p tcp://public.easytier.cn:11010

另外,easytier还有windows的gui和安卓的gui等等,都内置了core,这样就很简单实现了全端互联

大内网组建成功!

不得不说阿里云这个学生券白嫖真香😋

开一个端口就能用了😋