N2N使用DHCP方式获取IP地址

Linux, N2N, 折腾 2018/07/15

介绍一下使用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 条评论

  • pan 评论于 回复

    小黄鸭上的服务器分配IP不能修改规则吗,修改的IP输入不上去呢?

  • admlnos 评论于 回复

    关于win10版Minecraft的通过n2n联机的教程有嘛

  • lucktu 评论于 回复

    edge 充当 dhcp 服务器的功能,目前还有一个 bug,就是在 linux系统下不能正常分配。这个功能已经被我们QQ群友记下,稍后会去修复。

    目前官方即将合并的代码,已经提供了让 supernode 来分配ip的功能,以后 edge 端就可以不设置ip了,比较适合打游戏,不需要知道对方的n2n ip,只要在一个组内,一个网段即可。

    • Bug侠 评论于 回复

      @lucktu
      太棒了,又可以折腾了 :大笑: 提前感谢这位大佬

  • ゼニス 時計 口コミ 评论于 回复

    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前台运行以后就没办输命令 接下来想输命令操作要怎么弄呢?

    • Bug侠 评论于 回复

      @安抚
      保持这个SSH会话窗口,再开一个SSH……

      • 安抚 评论于 回复

        @Bug侠
        :笑哭: 好吧 我一直都是这么做的,话说EDGE报错 ERROR: recvfrom failed with No error 是什么意思啊?

          • iwantplay 评论于 回复

            @Bug侠
            我也有这个问题,我开虚拟机测试关防火墙可以ping通,60多ms,但是和别人连就显示 ERROR: recvfrom failed with No error(关了防火墙)

            • Bug侠 评论于 回复

              @iwantplay
              那很大概率就是UDP阻断,N2N走的UDP通信,部分运营商会阻断UDP数据包(一般情况下不会持续多久又会恢复)

              • iwantplay 评论于 回复

                @Bug侠
                谢谢,我试了下对方可以ping通我,但是我这边大部分时候都是ERROR: recvfrom failed with No error,只有偶尔出现Rx REGISTER_SUPER_ACK myMAC=00:FF:76:EE:,是我到服务端的udp被阻断了吗

                • Bug侠 评论于

                  @iwantplay
                  奇怪,新版的n2n已经很少提示REGISTER_SUPER_ACK 了,你那边是什么版本?

              • iwantplay 评论于 回复

                @Bug侠
                后面那条回复不了。我用的v2s版本,刚刚ping通了40多ms,之前不通原因是对方没启用网络发现。然后试了试胡闹厨房,还是玩不了,进房间都卡 :哭:

                • Bug侠 评论于

                  @iwantplay
                  v3试了吗?40ms的延迟也不至于很卡啊……搞不懂了

  • 冰皇 评论于 回复

    编辑/etc/sysconfig/dhcpd,添加一行
    这个文件夹我没有啊
    -bash: cd: dhcpd: Not a directory

    • Bug侠 评论于 回复

      @冰皇
      dhcpd版本?CentOS 7 ?

      • 冰皇 评论于 回复

        @Bug侠
        原来是文件,不用了,谢谢!我已经弄好了

    评论(本站已开启评论回复邮件通知功能,请如实填写邮箱以便及时收到回复)