n2n 虚拟网络 安装配置

0x00 n2n 简介

官方介绍 n2n

N2N 是一个基于二层(Layer-2)的点对点(Peer-to-Peer, P2P)虚拟私人网络(VPN),其主要设计特点与功能如下:

1. 设计特点

  • 基于 P2P 协议的加密二层私有网络:允许用户在网络层面而非应用层面利用 P2P 应用程序的典型功能。
  • 用户控制的加密:在边缘节点上执行加密,使用开放协议和用户定义的加密密钥。
  • 多网络支持:每个 N2N 用户可以同时属于多个网络(也称为社区)。
  • 穿越 NAT 和防火墙:具有反向穿越 NAT 和防火墙的能力,使得在私有网络上的 N2N 节点也能被访问。
  • 跨网络路由:N2N 网络不是孤立的,可以在 N2N 网络和非 N2N 网络之间路由流量。

2. 架构组件

2.1. 边缘节点(Edge Nodes)

  • tun/tap 设备:每个边缘节点创建一个 tun/tap 设备,作为进入 N2N 网络的入口点。
  • 通信方式:通过虚拟 tap 接口进行通信,每个 tap 接口代表一个 N2N 边缘节点。

2.2. 超节点(Supernode)

  • 启动与连接:在启动或访问位于对称防火墙后面的节点时使用。
  • 功能:作为目录注册器和无法直接通信的节点的数据包路由器。

边缘节点通过虚拟的tap接口进行通信。每个tap接口都是一个N2N边缘节点。每台PC可以有多个tap接口,每个N2N网络一个,这样同一台PC就可以属于多个网络。

n2n 的作用是建立一个虚拟局域网,基于 p2p 的模式,所以需要一个中心节点 这里叫作 supernode 和边缘节点 edgenode。各个设备就是edge,supernode 是服务器用于通知各个 edge 的虚拟 ip,完成握手以后,各个节点之间自行通信。

n2n 是个开源的项目。在各个节点上都会做出一张虚拟网卡出来。这个虚拟网卡的速率会与配置的参数不同,达到不同的实际速率。有很多的相关的资料可以自行查阅,这里不多做过多赘述。提速

n2n 是个全平台支持的产品,目前我实际上在使用过的设备包括 windows,linux,android。苹果相关设备还没用过,不做过多评价,就我使用过的平台而言效果非常不错。

项目地址 n2n

linux 服务器安装配置 supernode

1. 确定linux服务器版本

root@localhost:~# uname -m
x86_64

2. 下载安装

去这里下载相应的版本,然后安装

wget https://github.com/ntop/n2n/releases/download/3.0/n2n_3.0.0-1038_amd64.deb
dpkg -i n2n_3.0.0-1038_amd64.deb
Selecting previously unselected package n2n.
(Reading database ... 65867 files and directories currently installed.)
Preparing to unpack n2n_3.0.0-1038_amd64.deb ...
Unpacking n2n (3.0.0-1038) ...
Setting up n2n (3.0.0-1038) ...
Creating n2n group
Creating n2n user...
Rebuilding ld cache...
Glob pattern passed to check, but globs are not supported for this.
Invalid unit name "edge@*.service" escaped as "edge@\x2a.service".
edge@*.service is a disabled or a static unit not running, not starting it.
Glob pattern passed to check, but globs are not supported for this.
Invalid unit name "edge-ntopng@*.service" escaped as "edge-ntopng@\x2a.service".
edge-ntopng@*.service is a disabled or a static unit not running, not starting it.
Processing triggers for man-db (2.11.2-2) ...

3. 配置 supernode

cp  /etc/n2n/supernode.conf.sample /etc/n2n/supernode.conf
vim /etc/n2n/supernode.conf
systemctl restart supernode.service
systemctl status supernode.service

更改其中的 -p 后面的数字,这个是 supernode 监听的地址
-l
-c
比较有用

3.1. supernode 帮助文档

3.1.1. 基础网络连接选项

-p <本地端口>       | 固定的本地UDP端口,默认为7654  
-F <联邦名称>       | supernode联邦的名称,默认为'*Federation'  
-l <主机:端口>      | 已知supernode的IP地址或名称以及端口  
-M                  | 禁用非用户名密码认证社区网络名的所有MAC和IP地址欺骗保护  
-V <版本文本>       | 向边缘节点发送自定义supernode版本字符串(最多19个字符),在其管理端口输出中可见

3.1.2. 本地网络选项

-f                  | 不作为守护进程运行,而在前台运行  
-t <端口>           | 管理UDP端口,对于机器上的多个supernode,默认为5645  
--management_...    | 管理端口密码,默认为'n2n'  
...password <pw>    | 设置管理端口密码  
-v                  | 提高详细程度,按需重复  
-u <UID>            | 权限降低时使用的数字用户ID  
-g <GID>            | 权限降低时使用的数字组ID

3.1.3. TAP设备和覆盖网络配置

-c <路径>           | 包含允许社区网络名的文件  
-a <网络-网络/n>    | 自动IP地址服务的子网范围,例如  
                     | '-a 192.168.0.0-192.168.255.0/24',默认为'10.128.255.0-10.255.255.0/24'
root@localhost:/etc/n2n# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq state UP group default qlen
    link/ether aa:aa:00:0d:06:d8 brd ff:ff:ff:ff:ff:ff
    altname enp0s18
    altname ens18
    inet 111.222.111.222/22 brd 111.222.111.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::a8aa:ff:fe0d:6d8/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq state UP group default qlen
    link/ether ba:aa:00:0d:06:d8 brd ff:ff:ff:ff:ff:ff
    altname enp0s19
    altname ens19
    inet 169.254.254.254/32 brd 169.254.254.254 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::b8aa:ff:fe0d:6d8/64 scope link
       valid_lft forever preferred_lft forever

root@localhost:/etc/n2n# cat /etc/n2n/supernode.conf
#
#        The configuration file is similar to the command line, with one option per line. An equal
#        sign '=' should be used between key and value. Example: -p=7777
#        This file contains a basic configuration example, please refer to the help (-h) for the full
#        list of available options.
#
#       -p
#        Sets the UDP listening port.
#
-p=47654
#
#        -c
#        Optionally specifies the allowed communities as listed in community.list file.
#
# -c=community.list

3.2. 改防火墙

开刚才添加的端口

root@localhost:/etc/n2n# ufw allow 47654
Rule added
Rule added (v6)
root@localhost:/etc/n2n# ufw status
Status: active

To                         Action      From
--                         ------      ----
80                         ALLOW       Anywhere
443                        ALLOW       Anywhere
29302                      ALLOW       Anywhere
47654                      ALLOW       Anywhere
80 (v6)                    ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)
29302 (v6)                 ALLOW       Anywhere (v6)
47654 (v6)                 ALLOW       Anywhere (v6)

4. 配置edge

➜  n2n cat edge.conf
#
#         The configuration file is similar to the command line, with one option per line. An equal
#        sign '=' should be used between key and value. Example: -c=mynetwork or --community=mynetwork
#        This file contains a basic configuration example, please refer to the help (-h) for the full
#        list of available options.
#
#       -d|--tun-device
#        Specifies the name of the TUN interface.
#
-d=n2n0
#
#       -c|--community
#        Specifies the n2n community name the edge belongs to.
#
-c=ubkswfjm
#
#       -k
#        Sets the encryption key (ASCII). The environment variable N2N_KEY=<key> can also be used.
#
-k=789654123
#
#       -m
#        Specified the MAC address for the TAP interface (random otherwise).
#
# -m=DE:AD:BE:EF:99:99
#
#       -a
#        Sets the interface address. For DHCP use '-r -a dhcp:0.0.0.0'.
#
-a=10.0.0.3
#
#       -p
#        Sets the local UDP port to a fixed port.
#
#-p=47654
#
#       -l|--supernode-list
#        Specifies the supernode IP and port.
#
-l=111.222.111.222:55555 
#
  • -d 网卡名称
  • -c 社区网络名称
  • -k 密码
  • -a 自定义的 ip
  • -l 服务器ip,开放的端口(supernode -p的端口)

linux 上 命令行加入
sudo edge -d n2n0 -c ubkswfjm -k 789654123 -a 10.0.0.9 -l 111.222.111.222:55555

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇