# 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)

可以通过修改`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)`的信息
至此服务器已配置完成