Skip to content

Latest commit

 

History

History
363 lines (278 loc) · 9.89 KB

docker.md

File metadata and controls

363 lines (278 loc) · 9.89 KB

docker n2n_lucktu

关于

n2n 是一个 第二层对等 VPN,可轻松创建绕过中间防火墙的虚拟网络。

通过编译 ntop 团队 发布的 n2n,直连成功率高(仅局域网内不及), 且速度更快.

N2N 是通过 UDP 方式建立链接,如果某个网络禁用了 UDP,那么该网络下的设备就不适合使用本软件来加入这个虚拟局域网(用"blue's port scanner",选择 UDP 来扫描,扫出来的就是未被封的,正常情况下应该超级多)

为了开始使用 N2N,需要两个元素:

  1. supernode

    • 它允许 edge 节点链接和发现其他 edge 的超级节点。

    • 它必须具有可在公网上公开端口。

  2. edge :将成为虚拟网络一部分的节点;

    • 在 n2n 中的多个边缘节点之间共享的虚拟网络称为 community。

单个 supernode 节点可以中继多个 edge ,而单个电脑可以同时连接多个 supernode。 边缘节点可以使用加密密钥对社区中的数据包进行加密。 n2n 尽可能在 edge 节点之间建立直接的 P2P 连接;如果不可能(通常是由于特殊的 NAT 设备),则超级节点也用于中继数据包。

组网示意

组网示意

连接原理

连接原理

快速入门

代码换行

通过以下符号分行,你可以分行输入你需要运行的代码

终端 符号 按键方法
bash \ \ 位于Enter 键上方
powershell ` ` 位于 TAB 键上方
CMD Shift+6

建立 supernode

  • 前台模式

    docker run \
    -ti --rm \
    -p 10090:10090/udp \
    zctmdc/n2n_lucktu \
    supernode -p 10090 -vf
  • 后台模式

    docker run \
    -d --restart=always \
    --name=supernode \
    -p 10090:10090/udp \
    zctmdc/n2n_lucktu \
    supernode -p 10090 -vf

建立 edge

  • 前台模式

    docker run \
    -ti --rm\
    --privileged \
    --net=host \
    zctmdc/n2n_lucktu \
    edge -d T3 -a 172.3.0.77 -c n2n -k test -l 127.0.0.1:10090 -Efrv -e auto
  • 后台模式

    docker run \
    -d --restart=always \
    --privileged \
    --net=host \
    --name=edge \
    zctmdc/n2n_lucktu \
    edge -d T3 -a 172.3.0.78 -c n2n -k test -l 127.0.0.1:10090 -Efrv -e auto
  • 测试

    docker exec edge busybox ping 172.3.0.77

使用配置文件

v.2.3.0_r54 开始,支持从配置文件中启动

以下演示为 v.2.9.0+

  1. 创建配置文件

    • cat FILE EOF

      cat >file<<-EOF
      文件内容-line1
      文件内容-line2
      文件内容-line3
      文件内容-line4
      EOF

      see: https://cn.bing.com/search?q=cat+file+eof mabe not work.

    • var

      content='
      文件内容-line1
      文件内容-line2
      文件内容-line3
      文件内容-line4
      '
      echo "${content}">file
    • ./config/supernode.conf

      cat >./config/edge.conf<<-EOF
      -p=10090
      -f
      -v
      EOF
    • ./config/edge.conf

      # 虚拟网卡名字
      -d T3
      # edge ip
      -a=172.3.0.77
      # community 名字
      -c=n2n
      # community 密码
      -k=test
      # supernode 地址和端口
      -l=127.0.0.1:10090
      # 使用 AES 加密算法加密传输的数据
      -A3
      # 作为首选播发提供的本地IP地址
      -e=auto
      # 允许多播mac地址
      -E
      # 允许edge直接的网络转发
      -r
      # 详细模式
      -v
      # 前台运行而不是后台
      -f
      
  2. 挂载运行

    • supernode

      docker run \
        -d --restart=always \
        --name=supernode \
        -p 10090:10090/udp \
        -v $(pwd)/config/:/etc/n2n/ \
        zctmdc/n2n_lucktu \
        supernode /etc/n2n/supernode.conf
    • edge

      docker run \
        -d --restart=always \
        --privileged \
        --net=host \
        --name=edge \
        -v $(pwd)/config/:/etc/n2n/ \
        zctmdc/n2n_lucktu \
        edge /etc/n2n/edge.conf

ntop/n2n 项目配置文件示例

ntop/n2n 项目配置文件说明

使用 docker-compose 配置运行

  1. 创建配置文件

    • ./config/edge.conf

    • ./config/supernode.conf

    • docker-compose.yaml

      version: "3"
      services:
          n2n_supernode:
              # build:
              #   context: .
              #   dockerfile: Dockerfile
              image: zctmdc/n2n_lucktu
              container_name: n2n_supernode
              restart: always
              volumes:
                  - ./config/:/etc/n2n/
              command: ["supernode", "/etc/n2n/supernode.conf"]
              # privileged: true
              # network_mode: host
              ports:
                  - 10090:10090/udp
              networks:
                  n2n:
                      ipv4_address: 172.77.5.10
      
          n2n_edge_1:
              image: zctmdc/n2n_lucktu
              container_name: n2n_edge_1
              restart: always
              privileged: true
              command:
                  [
                      "sh",
                      "-c",
                      "edge -d T3 -a 10.3.0.77 -c n2n -k test -l 172.77.5.10:10090 -e auto -Efrv",
                  ]
              # network_mode: host
              networks:
                  n2n: # ipv4_address: 172.77.5.11
              depends_on:
                  - n2n_supernode
              external_links:
                  - n2n_supernode:n2n_supernode
      
          n2n_edge_2:
              image: zctmdc/n2n_lucktu
              container_name: n2n_edge_2
              restart: always
              privileged: true
              volumes:
                  - ./config/:/etc/n2n/
              command: ["edge", "/etc/n2n/edge.conf"]
              # network_mode: host
              networks:
                  n2n:
              depends_on:
                  - n2n_supernode
              external_links:
                  - n2n_supernode:n2n_supernode
      
      networks:
          n2n:
              driver: bridge
              ipam:
                  driver: default
                  config:
                      - subnet: 172.77.5.0/24
  2. 启动容器

    docker-compose up -d                          # 后台运行
    docker exec -ti n2n_edge_1 ping 10.3.0.78     # 运行指令
    # docker-compose up                           # 前台运行
    # docker-compose up n2n_edge_1                # 仅前台运行 n2n_edge_1
    # docker-compose up -d n2n_edge_1             # 仅后台运行 n2n_edge_1
    # docker-compose run n2n_edge_1 edge -h       # 运行指令

参数说明

不同版本间参数是不一样的,建议运行前使用 -h 或者 --help 命令查看。

中文说明参考: 附加参数 , 点对网

ntop/n2n 项目 doc 目录中有更多说明。

docker run \
  --rm \
  zctmdc/n2n_lucktu \
  supernode -h
docker run \
  --rm \
  zctmdc/n2n_lucktu \
  edge --help

更多介绍请访问 docker-compose CLI 概述

DHCP

内置多个软件包

  • busybox
  • iptables
  • isc-dhcp-client
  • isc-dhcp-server

参考官方的教程,网上说明,进行配置

  • dhcpd -f -d "${EDGE_TUN}" -cf dhcpd.conf
  • busybox udhcpd udhcpd.conf
  • dhclient -d --dad-wait-time 5 ${EDGE_TUN}
  • busybox ip
  • iptables

可以看看: https://github.com/zctmdc/docker/blob/alpha/n2n_ntop/scripts/n2n.sh

告诉我你在用

如果你使用正常了请点个赞

我将引起注意,不再随意的去更改和重命名空间/变量名