Linux客戶端

Linux 客户端用于接入VLAN.CN,与其他客户端或者网关路由器组网。

Linux 客户端需要与云端配合一起使用:

  • 创建新用户,云端注册
  • 编辑群组,添加/删除好友:到云端操作。

支持的Linux版本


支持64位Linux系统:

64位Linux系统 版本
Ubuntu 1604、1804、2004、2110
Debain 9、10
CentOS 7、Stream 8
Fedora 27、28、32、33
Rocky 8
Rhel 8

系统必须安装curl和net-tools 手动安装命令:
ubuntu和debian安装命令:
sudo apt install curl
sudo apt install net-tools

centOS和fedora安装命令:
sudo yum install curl
sudo yum install net-tools

rhel8安装命令:
sudo dnf install curl
sudo dnf install net-tools

没有特别说明,后面示例以及截图默认基于ubuntu系统,非root用户。

下载安装


下载安装一条命令: curl -kfsSL https://www.vlan.cn/dl/linux/install.sh | sh

img

在ubuntu和debain 系统上执行上述命令会自动安装net-tools。

启动、停止


vland需要root权限,运行vlancli也需要用root权限执行。
启动:sudo vlancli start
查看状态:sudo vlancli status
如下启动示例:
img

datadir是配置文件目录(从2022-04-12版本开始,配置文件目录默认是/etc/config/vlan),根据命令sudo vlancli status返回确认目录。
正常启动状态下status应该显示 running,如果显示 stop,请重新启动,如果status一直是stop请切换到 无法启动怎么办 排查问题,如果还有问题请联系我们。

停止 VLAN.CN命令: sudo vlancli stop
img

可以执行ps相关命令检查vlancli 和vland进程是否彻底关闭。
sudo ps -ef|grep vlancli
sudo ps -ef|grep vland

vlancli 命令


vlancli 命令除了 vlancli startvlancli stopvlancli status 基本命令外,还有功能命令(登录命令,加入、连接以及断开虚拟网命令,网关设置以及连接相关命令),具体可以执行 vlancli help 查看所有命令,如下是常用的功能命令使用详情(非root用户在命令前加sudo):

1. 登录命令

vlancli login USER PASSWD (URL)
USER是用户已经注册的用户名,PASSWD是用户名对应密码,URL默认是 https://api.vlan.cn ,可省略。
注意:如果修改过密码,请先停止vlan(执行:vlancli stop)再使用新密码登陆。 root用户登录如下示例: img

2. 加入虚拟网命令

vlancli joinvlan [VlanId] 加入一个新的虚拟网,vlanId为虚拟网ID, 获取VlanId方式如下:
img

加入虚拟网示例如下:
img

如果执行 vlancli status 命令结果没有看到连接的组,就需要执行 vlancli syncvlan 同步一下数据就可以显示了: img

3. 连接虚拟网命令

vlancli connect [dnet_id]
dnet_id为虚拟网ID,如下示例:
img

4. 断开虚拟网命令

vlancli disconnect [dnet_id]
dnet_id 是虚拟网ID,vlancli status 命令可以看到当前连接(connected)的组以及断开(disconnected)的虚拟网,如下示例: img

5. 网关相关命令

linux可以设置成网关。
开启/关闭网关功能
vlancli subnet enable
vlancli subnet disable

img

6. 虚拟网信息展示命令

vlancli vlan list 展示所有连接过的组信息以及组内节点ID。
vlancli getvlanlist 展示所有连接过的组信息以及组内节点虚拟IP。
返回的 "Name":"0B375C437F6D41B2ABB18AEB430BEA85" 是虚拟网络ID, "Alias":"relay2" 是虚拟网络名,后面的加入、连接、断开虚拟网需要用的虚拟网络ID,如下示例:
img

注意:命令只展示 连接过 的虚拟网,如果从未连接过的虚拟网上述命令是不会展示的,只能登录web或者云端查看。

设置成 gateway(网关)/client(客户端)角色
vlancli set role gateway
vlancli set role client
img

设置完成必须重新启动 vland 后新角色才会生效。

img

查看所有子网、本地子网以及远程子网命令
vlancli subnet list
vlancli subnet list local
vlancli subnet list remote

添加删除本地子网
添加本地子网格式:vlancli subnet add [SUBNET] [MASK] (enable)
命令举例: vlancli subnet add 10.0.3.0 24
删除本地子网,格式:vlancli subnet set [SUBNET] [MASK] [enable|disable]
命令举例: vlancli subnet del 10.0.3.0 24

img

设置本地添加的子网开启/关闭
设置本地子网开启命令格式:vlancli subnet set [SUBNET] [MASK] [enable|disable]
举例:vlancli subnet set 10.0.3.0 24 enable
vlancli subnet set 10.0.3.0 24 disable

img

连接远程子网
连接远程子网格式:vlancli subnet link [SUBNET] [MASK] [IP|NodeName]
举例:vlancli subnet link 10.0.3.0 24 6d470d91

img
连接远程子网后,本机节点可以访问子网对应的IP地址。

断开远程子网: 断开远程子网格式:vlancli subnet unlink [SUBNET] [MASK] [IP|NodeName]
举例: vlancli subnet unlink 10.0.3.0 24 6d470d91

img
断开远程子网后,本机节点不能访问子网对应的IP地址。

web登录


如果没有云端账户则需要先到云端注册。 web访问支持本地登录和远程登录。

(1) 本地登录

已经启动VLAN.CN后,本机web访问可用:http://localhost:50069 或者 http://127.0.0.1:50069 。 本机验证码获取方式只要点击界面的获取验证码即可自动填写。
img
点击登录即可进入虚拟组网。 点击界面的用户注册可直接链接到云端注册页面
点击偏好设置可以设置查看云端地址,默认 https://api.vlan.cn ,没有特殊情况不需要修改。
img

(2) 远程登录

已经启动VLAN.CN后,如果本地web访问不方便,可以远程web访问。 远程web访问地址:http://x.x.x.x:50069 ,x.x.x.x为linux机器的网卡IP地址,本机必须可以ping通它,其次如果有防火墙必须开放 50069 端口。
VLAN.CN本机获取验证码,用于非本机的Web UI登录校验,获取命令:sudo vlancli token
如下图示:

img
点击登录即可进入虚拟组网。

注意:如果50069端口无法远程访问,需要检查防火墙iptables和firewall是否限制了端口访问?

虚拟组网


虚拟组网界面,如下图示:

img

(1) 添加、删除组

如果不用系统默认创建的组,可以在客户端创建新组,点击添加虚拟网按钮,弹出编辑框,可以自定义组名称以及组描述,其中组名必填项,仅支持数字、字母和下划线,组描述为选填项。
img

新创建的组显示在组列表,如果要编辑删除必须云端登录操作。

删除组,直接点击组对应的删除按钮,提示框点击确定即可删除。
img

(2) 连接组

点击组列表的任意组可以进入连接界面:

img

点击连接按钮连接成功,本机虚拟IP在顶部显示,如下图示: img

其它节点也可以连接这个组。

ping组内其它在线节点的虚拟IP验证连通性:
img

注意:新节点首次连接可能会慢一点,可能需要重新刷新列表或者重新连接才显示已连接状态。

(3) 连接多组

一个节点可以同时连接多个组,进入组内点击连接,然后返回到虚拟网列表点击另外的组继续连接即可。
如下图示节点连接了2个虚拟网:
img

节点10.1.1.147就可以同时ping通2个虚拟网内的在线节点。

img

(4) 查看详情

连接成功可以查看连接协议:
img
查看连接链路,如下是中继模式,通过组内其它节点转发:
img
查看组内用户:
img
查看中继节点:
img
组内节点之间如果无法直连,可能会使用中继节点转发。

设备信息


设备信息展示本机节点VLAN.CN详情,如虚拟IP、节点名称、角色、运行时间、收发流量、验证码等,如下图示: img

修改虚拟IP

设备信息可以修改本机节点的虚拟IP。

img

注意:修改虚拟IP不要和网络环境的IP地址冲突。

开始网关模式


设置可以检查云平台地址(默认地址: https://api.vlan.cn ), 也可以开启网关模式,默认网关模式未启用。

img

卸载、更新


Ubuntu系统卸载VLAN.CN后重新安装:

  1. 先停止 VLAN.CN:sudo vlancli stop
    也可以执行 sudo ps -ef|grep vlan 检查还没有vlancli和vland进程? 万一有的话就kill掉。
  2. 卸载:先查看安装 sudo apt list | grep dnet-vlan
    卸载命令 sudo apt remove dnet-vlan

img

  1. 运行 curl -kfsSL https://www.vlan.cn/dl/linux/install.sh | sh 重新安装。
  2. 可以执行sudo vland --v查看新的版本号。

CentOS系统卸载VLAN.CN后重新安装:

  1. 先停止 VLAN.CN:sudo vlancli stop
  2. 查看安装的包,执行 yum list installed
    img

如果没有找到VLAN.X86_64可以执行 yum list installed | grep VLAN 查看

img

  1. 卸载: 执行 sudo yum remove VLAN.x86_64

img

  1. 重新执行 curl -kfsSL https://www.vlan.cn/dl/linux/install.sh | sh 安装新版本。

直接覆盖升级安装:

一般ubuntu系列系统可以实现覆盖升级安装

  1. 先停止 VLAN.CN:sudo vlancli stop
    也可以执行 ps -ef|grep vlan 检查还没有vlancli和vland进程? 万一有的话就kill掉。
  2. 运行 curl -kfsSL https://www.vlan.cn/dl/linux/install.sh | sh 覆盖安装。
  3. 可以执行sudo vland --v查看新的版本号。

注意:部分系统(如centOS)无法覆盖安装,如下图示centOS安装新版本提示已经安装:
img
这就需要先卸载然后安装。

无法启动怎么办


sudo vlancli start 执行后没有vland进程,则可能是依赖库找不到的原因。

libxxx.x.x not found

确认系统支持vland,需要能够找到所有依赖库例如,进入vland所在目录,执行 ldd vland,如果没有权限则需要授权 chmod 755 vlancli vland

正常情况如下图示: img

缺少依赖库如下图示:
img

需要拷贝对应依赖库到可以找到的lib目录,例如ubuntu可以拷贝到 /usr/lib/x86_64-linux-gnu/目录,centOS可以拷贝到/lib64/目录。 进入依赖库下载
img
拷贝到系统对应目录。 img

一直到ldd vland命令能找到所有依赖库为止。

GLIBCx.xx not found

如果系统版本比较低可能会遇到报错GLIBCx.xx not found,点击参考安装需要的glibc版本

查询版本号命令./vland --v
img

内核版本太低的linux系统vland找不到对应版本的GLIBC,需要升级新版本。 如下以CentOS6.1系统为例:
老版本的vland ,ldd vland或者vland --v可能报错GLIBC2.25 not found,如下所示: img

新版本的vland 只需要GLIBC2.15

解决办法:安裝下载需要的glibc版本,如下以下载安装glibc-2.15为例:

  1. 查看系统glibc支持的版本

    strings /lib64/libc.so.6 |grep GLIBC
    rpm -qa | grep glibc
    

    img
    查看本机libc版本: /lib64/libc.so.6
    img

  2. 下载需要的glibc版本。
    点击打开官网地址
    点击显示所有版本安装包
    下载到当前目录:
    wget http://ftp.gnu.org/gnu/glibc/glibc-2.15.tar.gz
    解压到当前目录: tar -xzvf glibc-2.15.tar.gz
  3. 编译安装

    cd glibc-2.15
    mkdir build && cd build/
    ../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
    make -j4
    make install
    

    安装完毕查看当前版本:
    img

注意:不要将 glibc 安装到默认的目录/usr/local或者任何自定义的目录,请务必安装到/usr目录

远程web无法访问?


如果安装启动后远程web页面无法访问怎么办?

排查问题

  1. 检查 VLAN.CN 端口是否限制? 启动以后,可用telnet 测试 50069 端口,正常远程访问如下图示:

    img

    如果不能访问则需要检查防火墙,可以执行sudo iptables -L 查看相关规则,如果有限制50069端口,就请放开;
    执行 sudo systemctl status firewalld.service 检查防火墙是否运行,如果正在运行,请执行 sudo systemctl status firewalld.service 停止,然后重新测试访问50069端口。

  2. 如果VLAN.CN端口可以访问,但是web还是访问不了,如下图示:

    img

    检查www文件,执行 sudo vlancli status 确认配置目录, 查看配置目录下www是否有对应文件,正常如下图示:

img

如果没有www目录或者www目录下为空,那么就执行 curl -kfsSL https://www.vlan.cn/dl/linux/install.sh | sh 重新安装一遍。 www目录下文件完整后,可正常进入登录界面。

连接组不成功怎么办?


如果web界面登录成功后连接组一直不成功怎么办?
可能新旧版本上报内容冲突或者不同设备的machine-id相同导致的问题。

解决问题:

  1. 先停止该设备的 vlan.cn客户端: sudo vlancli stop
  2. 云端登录 该用户;
  3. 解绑 对应设备;
  4. 移除已生成的配置文件 sudo rm -rf /etc/config/vlan
  5. 重新下载安装当前新版本: curl -kfsSL https://www.vlan.cn/dl/linux/install.sh | sh 如果是centos系统,则必须先 卸载再安装
  6. 重新启动: sudo vlancli start
  7. web登录然后连接虚拟网。