# n2n_client_runner **Repository Path**: lee_luo/n2n_client_runner ## Basic Information - **Project Name**: n2n_client_runner - **Description**: 一个n2n客户端(edge.exe)GUI启动器 - **Primary Language**: C# - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-07-25 - **Last Updated**: 2021-07-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # N2N Client Runner   **近期n2n网络连接出现不明原因断线情况,非本程序造成的问题。**   断线后需要重新建立连接才能恢复,开启强制中继数据可能会对断线情况有所改善,但经测试依然存在断线情况,维持稳定连接的时长不等,个人测试平均时长未超过20分钟。 ## 介绍 一个n2n客户端(edge.exe)GUI启动器 下载地址:[https://gitee.com/shekinon/n2n_client_runner/releases](https://gitee.com/shekinon/n2n_client_runner/releases) ![预览](preview.png)   可以通过修改`config.xml`并重新压缩打包实现快速分发自己的n2n连接方案。   正确配置启动后可以优化P2P联机游戏联机效果,需要同一房间内的所有玩家均正确配置启动。   n2n通过中继服务器建立虚拟局域网来优化p2p联机体验。 ## 目录结构: ``` +-- client.exe 本工具主程序 +-- bin | +-- edge.exe edge可执行程序 | +-- tap-windows-9.21.2.exe TAP网络适配器安装程序 ``` ## bin文件夹中所需文件下载地址 release里会打包好 |文件名|下载地址| |-|-| |tap-windows-9.21.2.exe|http://build.openvpn.net/downloads/releases/tap-windows-9.21.2.exe| |edge.exe|https://github.com/lucktu/n2n/tree/master/Windows| ## 可用服务器节点 **仅供测试使用,不保证服务器可靠性** 服务器IP:`47.108.161.222` 端口(支持dhcp):`10000` dhcp服务器:`dhcp:10.6.8.0` dhcp提供的ip范围:`10.6.8.2`-`10.6.8.254` **有服务器条件的玩家建议自建服务器以保证游戏联机稳定性** --- ## 使用教程 ### 系统需求 Windows 10 x64 ### 首次启动   如果系统中没有安装TAP网络适配器的话,程序会自动调用`bin`路径中的`tap-windows-9.21.2.exe`安装TAP网络适配器,只需一直下一步同意协议安装即可,默认仅安装`TAP Virtual Ethernet Adapter`,无需进行其它选择操作。 ### 连接服务器 现版本程序精简了用户配置需求,仅需在客户端中设置服务器IP和端口即可连接。 其它的配置交由自建服务器的玩家进行修改和二次分发即可。 ### config.xml 本程序的配置文件,可以针对各参数进行手动配置,程序运行时会自动读取并完成配置,如果此文件丢失会基于默认值自动新建文件。 关于`dhcpd`参数,可使用纯ipv4地址形式手动指定IP地址,或者使用`dhcp:dhcpd`方式指定dhcp服务器,举例: 手动指定ipv4地址:`10.6.8.123` 指定dhcp服务器自动分配ip地址:`dhcp:10.6.8.1` 关于`relay`参数,用以规定是否添加`-S`参数以强制使用服务器中继数据,`True`强制中继,`False`不强制中继,如果edge节点间无法通过p2p方式传输数据,仍会自动使用中继服务器中继数据。 ### mac.xml 软件首次运行时会自动生成一个MAC地址,以后连接时会自动使用此地址作为虚拟网卡的虚拟MAC地址。 **正常使用时请不要修改或删除此文件,也不要使用别人的mac.xml文件进行覆盖。** ### 连接后查看是否正确配置 打开任务管理器进入性能页查看一个描述为`TAP-Windows Adapter V9`的以太网适配器,或者直接进入网络适配器管理页查看网络详细信息,比对IPv4地址是否在服务器dhcp提供的ip范围之内,即可判断是否连接成功。对于手动设置IP地址的类型,需通过ping其它edge客户端的方式验证是否连接成功。 --- ## 自建服务器配置教程 系统:Ubuntu 20.04 ### 1.下载supernode和edge 下载或编译好n2n,拿到`supernode`和`edge`两个可执行文件 ``` wget https://github.com/ntop/n2n/archive/2.8.zip unzip 2.8.zip cd n2n-2.8 ./autogen.sh make cp edge ../ cp supernode ../ cd .. ``` ### 2.运行supernode节点 ``` nohup supernode -l 10000 1>/dev/null 2>&1 & ``` ### 3.运行edge节点 使用`-d edge0`指派虚拟网卡名称为`edge0`,方便后续绑定为网关 ``` sudo edge -d edge0 -c n2n -k clientrunner -l 127.0.0.1:18888 -a 10.6.8.1 -p 9876 -m 00:01:02:03:04:05 ``` 参数解释:`-c`后对应community,`-k`后对应key,需要同一房间的各联机edge节点相同,`-a 10.6.8.1`绑定本地IP`10.6.8.1`,用作后续网关的IP,`-p 9876`绑定本地UDP端口,方便查看管理,`-m`设置虚拟网卡的mac地址,使用固定地址可以防止随机地址造成的ARP污染。 **community和key不同不会影响dhcp服务器分配ip,但连接后无法通过ping该节点测试本地节点与服务器的延迟** ### 4.配置dhcp服务器 **dhcp服务器需要在用于绑定dhcp服务器的edge节点之后启动** 使用如下命令安装dhcp服务器 ```sudo apt -get install isc-dhcp-server``` 编辑配置文件`/etc/default/isc-dhcp-server`,修改如下字段为之前在服务器本地上运行的edge节点名称 ``` INTERFACESv4="edge0" INTERFACESv6="" ``` 无需设置IPv6的DHCP服务器 编辑配置文件`/etc/dhcp/dhcpd.conf`, ``` subnet 10.6.8.0 netmask 255.255.255.0 { range 10.6.8.2 10.6.8.254; # 分配ip的范围 option subnet-mask 255.255.255.0; # 子网掩码 option routers 10.6.8.1; # 网关IP option broadcast-address 10.6.8.255; # 广播地址 default-lease-time 21600; # 默认租期时长(秒) max-lease-time 86400; # 最大租期时长(秒) } ``` 运行dhcp服务器 ``` sudo systemctl start isc-dhcp-server sudo systemctl enable isc-dhcp-server ``` ``` sudo systemctl status isc-dhcp-server ``` dhcp服务器若正常运行可以看见`Active: active (running)`的信息 至此服务器已配置完成