需求
使用N2N V3创建局域网192.168.1.0/24
。
* 以公网服务器A(a.com)作为中心节点,局域网IP地址为192.168.1.1
。
* 以内网服务器B作为边缘节点,局域网IP地址为192.168.1.2
,同时具有IP地址为192.168.2.1
。
* 终端设备C(IP地址192.168.2.2
)与B在同一网络,可以通过B访问局域网192.168.1.0/24
。
以上所有服务器、终端均为Linux设备。Windows设备可按需参考。
N2N配置
1. 服务器A:中心节点(supernode)
在服务器A上安装n2n-supernode
和n2n-edge
,进行以下配置。
- 创建community列表
一个supernode可以作为多个网络的中心节点,community用于标识不同网络。如果supernode在公网中使用则务必设置,否则你的节点可能会变成公交车。
vi community.list
创建列表文件,写入网络标识字符串。以下仅为示例,建议设置得复杂些。
my_com
# 可以指定多个
- 命令行启动supernode
用以下命令启动supernode:
n2n-supernode -M -p 5000 -f -c ./community.list
# -M:关闭MAC、IP地址保护。自用的话关闭问题不大
# -p:监听端口5000,按需修改
# -c:指定community列表文件
- 命令行启动edgenode
为了让中心节点拥有IP地址,中心节点也需要启动edgenode。
n2n-edge -z1 -c my_com -k password -a 192.168.1.1 -f -l 127.0.0.1:5000 -A4 -d n2nif
# -z1:使用lzo1x压缩
# -c:网络community
# -k:连接密钥。别真设置成password啊
# -a:本机地址
# -f:前台运行
# -l:Supernode的地址
# -A4:使用Chacha20加密算法
# -d:创建网卡的名称。在配置防火墙时会有用
2. 服务器B:边缘节点(edgenode)
在服务器B上安装n2n-edge
,用以下命令启动。
n2n-edge -z1 -c my_com -k password -a 192.168.1.2 -f -l a.com:5000 -A4 -d n2nif -r -R 192.168.1.0/24,192.168.2.0/24,TCP-,UDP-,ICMP-
# 中心节点中使用的参数说明,这里不再赘述
# 注意community、密钥、加密算法需要与其他节点一致
# -r:允许路由
# -R:配置访问限制。C可以通过B访问A,但A不应具有C的访问权限
路由设置
1. 服务器B设置
执行以下命令:
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -d 192.168.1.0/24 -j MASQUERADE
2. 终端C设置
执行以下命令:
ip route add 192.168.1.0/24 via 192.168.2.1
# 即通过B访问192.168.1.0/24网络
配置后效果
- 在终端C上执行
ping 192.168.1.1
,成功。 - 在服务器A上添加路由
ip route add 192.168.2.0/24 via 192.168.1.2
,并ping 192.168.2.2
,失败。