N2N使用DHCP方式获取IP地址
介绍一下使用N2N组建虚拟局域网时,采用DHCP方式获取IP地址的方法。
2021-02-27 更新:
最新的n2n已经支持supernode(服务端)自动分配IP地址(Auto IP),也就是supernode自带dhcp的功能
服务端搭建:https://bugxia.com/336.html
Windows下的客户端:https://bugxia.com/357.html
更推荐使用supernode自带的自动分配IP地址功能,以下方法目前也同样可以使用,但仅供折腾学习
之前写的关于N2N的文章,都是基于指定静态IP地址的方法来组网,略微麻烦,并且有可能会出现多个客户端指定同样的IP地址,导致IP冲突。
所以今天尝试了一下使用n2n客户端(edge)的 -a dhcp 参数来使用DHCP方式获取IP地址,省去了手动指定的麻烦。
以下方法均基于CentOS 7.4 64Bits
总结了三个关键点
1.edge(客户端)的dhcp参数的含义
2.dhcp服务器必须为一个edge节点 p.s 可以在中心节点(supernode)上同时跑edge节点
3.做DHCP服务器的edge节点要先启动edge,然后再启动dhcp服务
一、安装DHCP服务并简单配置
yum install dhcp -y
编辑/etc/dhcp/dhcpd.conf文件,更改为:
ddns-update-style interim;
ignore client-updates;
default-lease-time 604800;
max-lease-time 1209600;
subnet 192.168.233.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
range dynamic-bootp 192.168.233.1 192.168.233.255;
}
编辑/etc/sysconfig/dhcpd,添加一行:
DHCPDARGS="edge0"
保存。
二、启动supernode(略)
三、在supernode所在的服务器上启动edge
#参数 -d 为指定的网卡名称,和上面的/etc/sysconfig/dhcpd中保持一致。
#参数 -a 指定一个DHCP服务器地址,和/etc/dhcp/dhcpd.conf中保持一致。
#参数 -v -f 可省略,省略则为后端启动,无法看到调试信息
#其他参数释义见 https://bugxia.com/336.html
edge -d edge0 -r -a 192.168.233.0 -c bugxia -k 123456 -l 0.0.0.0:12345 -v -f
四、启动DHCP服务
systemctl start dhcpd.service
如果报错,使用 journalctl -xe 命令查看错误信息
五、启动其他edge节点
#Linux
edge -d edge0 -r -a dhcp:88.88.88.88 -c bugxia -k 123456 -l 88.88.88.88:12345 -v -f
#Windows
edge.exe -d "本地连接" -r -a dhcp:88.88.88.88 -c bugxia -k 123456 -l 88.88.88.88:12345 -v
注:
命令中的88.88.88.88为supernode节点地址,如果dhcp和supernode不在同一服务器上,则需分别更改为对于地址
-d “本地链接” 为Windows下的Tap网卡的名称,如果只有一个Tap虚拟网卡,则该参数可以省略
27 条评论
小黄鸭上的服务器分配IP不能修改规则吗,修改的IP输入不上去呢?
关于win10版Minecraft的通过n2n联机的教程有嘛
@admlnos
Win10版还没折腾过,我这边是Java版
https://bugxia.com/2187.html
空了研究研究
BUG侠,为游戏而生!
edge 充当 dhcp 服务器的功能,目前还有一个 bug,就是在 linux系统下不能正常分配。这个功能已经被我们QQ群友记下,稍后会去修复。
目前官方即将合并的代码,已经提供了让 supernode 来分配ip的功能,以后 edge 端就可以不设置ip了,比较适合打游戏,不需要知道对方的n2n ip,只要在一个组内,一个网段即可。
@lucktu
太棒了,又可以折腾了 提前感谢这位大佬
At this moment I am going to do my breakfast, later
than having my breakfast comiing again to read further news.
Alsso visit my blog ブライトリング 中古 正規 割引
I need to tto thank you forr this wonderful read!!
I certainly loved every little bit of it. I have got you book marked to
check out new stuff you post…
my web page :: ハミルトン 時計 横浜
Hey there would you mind shaeing which blog platform you’re working with?
I’m looking to start my own bllg in the near future but I’m having a tough time
deciding between BlogEngine/Wordpress/B2evolution and Drupal.
The reason I ask is because your design seems different then most blogs and I’m looking for something
unique. P.S Sorry ffor getting off-topic
but I had to ask!
Look into mmy homepage; ゼニス 時計 口コミ
问个弱鸡问题- – -f前台运行以后就没办输命令 接下来想输命令操作要怎么弄呢?
@安抚
保持这个SSH会话窗口,再开一个SSH……
@Bug侠
好吧 我一直都是这么做的,话说EDGE报错 ERROR: recvfrom failed with No error 是什么意思啊?
@安抚
接收数据失败(recvfrom failed),但没有报错(No error)
我看了一下源码
https://github.com/meyerd/n2n/blob/33fa8874a89cb01dc7d52f8060b90c0cebf627bb/n2n_v2/edge.c#L1853
报这个错貌似是UDP相关的问题,检查一下你那边UDP有没有被运营商封锁、防火墙有没有放行什么的吧
@Bug侠
我也有这个问题,我开虚拟机测试关防火墙可以ping通,60多ms,但是和别人连就显示 ERROR: recvfrom failed with No error(关了防火墙)
@iwantplay
那很大概率就是UDP阻断,N2N走的UDP通信,部分运营商会阻断UDP数据包(一般情况下不会持续多久又会恢复)
@Bug侠
谢谢,我试了下对方可以ping通我,但是我这边大部分时候都是ERROR: recvfrom failed with No error,只有偶尔出现Rx REGISTER_SUPER_ACK myMAC=00:FF:76:EE:,是我到服务端的udp被阻断了吗
@iwantplay
奇怪,新版的n2n已经很少提示REGISTER_SUPER_ACK 了,你那边是什么版本?
@Bug侠
后面那条回复不了。我用的v2s版本,刚刚ping通了40多ms,之前不通原因是对方没启用网络发现。然后试了试胡闹厨房,还是玩不了,进房间都卡
@iwantplay
v3试了吗?40ms的延迟也不至于很卡啊……搞不懂了
编辑/etc/sysconfig/dhcpd,添加一行
这个文件夹我没有啊
-bash: cd: dhcpd: Not a directory
@冰皇
dhcpd版本?CentOS 7 ?
@Bug侠
原来是文件,不用了,谢谢!我已经弄好了