For english version README, see README_EN.md
.
VProxy软件交换机。
VPSS是一个交换机而非路由器,但它通过SDN能力过滤并修改数据包,以此提供比传统三层交换机和路由器更多的功能。
- 交换
- 路由
- 虚拟网络和VLAN
- 远端交换机(需要配合vproxy使用)
- ipv6 (可开启或关闭)
- 统计数据
- 操作mac/arp表
- 黑/白名单
- 流控
- 自定义流表
- vpws-agent
- x86机器
- linux操作系统
- 内核版本最低5.4。推荐使用5.10或者更高.
- 你可以使用 ubuntu 20.04 hwe edge (5.11) 或者 debian 11 (5.10)。
- 无需配置你的光猫:使用路由模式并开启DHCP。这也是家用光猫默认的配置。VPSS会通过dhcp自动配置网络,并使用SDN能力来完成路由功能。
需要安装Docker:
apt-get update
apt-get install -y docker.io
复制并执行该脚本:
bash ./install.sh
这里你可以直接给脚本传参,以定义vpss
的启动参数,例如--ignore-network-interfaces=enp3s0
。
需要将vpss
放在路由器和你的设备之间:
+--------+ +------+ +----+ +-------+
| Router |----| VPSS |----+-----| AP |·))) (((·| Phone |
+--------+ +------+ | +----+ +-------+
or modem | bridge
in router |
mode | +----+
+-----| PC |
+----+
你需要一个支持VLAN的交换机:
+--------+ +------+ +----+ +-------+
| Router |-------------+ | VPSS | +-------------| AP |·))) (((·| Phone |
+--------+ | +------+ | +----+ +-------+
or modem vlan101 | nvlan101 || | vlan 201 bridge
in router (access)| trunk || | (access)
mode +---------------------------+ +----+
| VLAN Switch |-----------| PC |
+---------------------------+ +----+
vlan101 |
(access)|
|
admin
注意:
- 在VLAN交换机上:连接VPSS的端口的本征VLAN需要设置为
Router
所在的vlan(这个例子里vlan是101
) - 在VPSS上:你需要手动配置VLAN
- 第一次启动VPSS后,你需要连接admin网口,并手动配置你的设备的IP为
100.118.103.118
,并配置子网掩码为/31
或者255.255.255.254
(对于某些操作系统,你需要配置子网掩码为/28
或者255.255.255.240
,因为它可能认为100.118.103.119
是广播地址而不是two hosts网络)。
在你的设备上,使用浏览器访问http://vgw.special.vproxy.io
或者http://100.118.103.119
。
如果你第一次访问该系统,你需要使用admin
作为用户名,并使用你希望设置的密码进入系统。这次登录输入的密码会被记录并且后续登录时均需要使用该密码。进入系统后也可以重新设置密码。
配置完成后,不要忘记检查并持久化配置,否则重启后配置会丢失。
由于VPSS也是一个交换机,所以需要特别注意,不能将两个VPSS的同VLAN的端口同时连接到同一个交换机的同一个VLAN上,否则会触发广播风暴。
这里要注意的是,在VPSS启动时,会通过DHCP自动获取网络配置,此时会将所有配置文件中受管控的端口加入同一个虚拟网络(如果没有配置文件或者没有受管控的端口,那么所有可用的物理端口均会被加入虚拟网络),并且此时报文不带802.1q tag。
所以,在支持VLAN的交换机上,必须给VPSS通往DHCP服务器(通常来说就是路由器/光猫)的端口配置本征VLAN,并且保证连接到同一交换机的其他端口不允许非802.1q报文,或者配置不同的本征VLAN,以避免广播风暴。
本项目使用GPLv2开源。
并通过源代码或二进制依赖如下开源项目:
- vproxy
- jquery
- chartjs
- semantic ui
- vue, vue-i18n, vue-resource
- js-cookie
- noto
请查看doc/develop.md
。