校园网Wireguard-我有特别的部署方案
前言
为什么说我有特别的部署方案呢?是因为我所在的学校网络架构比较复杂,请看下面的图片
我的目标是要让我的设备可以使用工作室网络上网,且不需要认证。
我们学校使用的是锐捷认证,且一个账户最多只能登录两个设备。
而我有两个手机一个平板一个笔记本,而且还有几个虚拟机需要网络;另一个原因是我不想交网费(工作室网络可以免费用)
经过实验发现我们学校未认证的设备可以无障碍以UDP协议访问53端口,正好可以在这个端口上运行Wireguard服务。
除此之外我还想访问工作室内未经过认证的设备,比如打印机。
虚拟机系统我使用Oracle Linux,这是一个RHEL的替代品,他和RHEL完全兼容。版本: Red Hat Enterprise Linux release 8.6 (Ootpa)
开始之前,如果你需要一些小工具可以添加epel源
1 | yum install epel-release -y |
NAT模式的IPv4上网配置
路由配置
两个接口的ip地址和链接位置上面已经给出,他们通过服务器网口桥接到交换机上,除此之外还需要调整路由表:
NetworkManager配置大致如下(已经省略IPV6部分):
1 | ens18: connected to ens18 |
解释一下: 将ens18作为默认路由出口,并且忽略10.0.117.0/24的路由,这是因为打印机未认证流量无法经过楼层交换机。而ens19未认证却接在了工作室交换机上,因此它能够无障碍访问工作室内所有资源。此外,因为ens18需要作为wg服务器的入口,所以我将其设置成了静态ip,尽管内网已经存在DHCP服务器,但是DHCP服务器不会将已经被占用的IP分配给其他设备
内核功能配置
开启内核转发,修改/etc/sysctl.conf
1 | net.ipv4.ip_forward=1 |
wireguard配置
到https://www.wireguardconfig.com/生成一份配置文件,如果你的用途和我一样,请按照下面的方式填写
- Listen Port: 填写
53
- CIDR: 填写
192.168.6.0/24
,这是为了和校园网不冲突 - Endpoint: 填写
10.0.117.209:53
,改成你自己的 - DNS:随便填写一个公共DNS服务器
- Post-Up rule: 其中有一个
eth0
,需要修改成ens18
(能上网那个接口)
接下来安装wireguard-tools
1 | yum install wireguard-tools |
关闭防火墙1
2systemctl stop firewalld
systemctl disable firewalld
生成配置文件,并将server.conf复制到/etc/wireguard/
下
接下来使用wg-quick
控制服务器启停
1 | systemctl start wg-quick@server |
查看状态
到这里IPV4的上网配置就已经结束了,将配置文件导入设备即可使用。
IPv6呢?
其实到这里本文的核心内容才开始。与大部分人的做法不同,我不想配置NAT模式的IPv6,因为我要下BT种子。所以我需要直接获得一个工作室的IPv6地址。
修改配置
以下是服务器地址设置(内网地址已省略):
1 | ens18: |
同时需要修改/etc/sysctl.conf
1 | net.ipv6.conf.all.forwarding=1 # 启动流量转发 |
修改i6ptables
规则,允许转发,将其改为你的可联网接口
1 | ip6tables -6 -A FORWARD -i ens18 -j ACCEPT |
修改wireguard配置
- 在服务端的
Address
内添加一个内网地址,例如fd42:114:514::1/64
- 在服务器对应客户端的
AllowedIPs
里添加一个工作室ip段内的地址,例如xxxx:xxxx:c00:72:114:514:0:2/128
- 在客户端也添加上面的IP段内地址
至此,从你客户端流出的流量可以被正确转发到楼层交换机了,但是楼层交换机不知道如何给你响应。
转发NDP数据包
搜索了一番,这是因为没有转发NDP请求。NDP协议和IPv4的ARP作用差不多,他将IPv6地址转换为Mac地址。可以使用NDPPD来完成转发
安装NDPPD
1 | yum install ndppd |
修改/etc/ndppd.conf
1
2
3
4
5
6
7
8
9
10
11route-ttl 30000
proxy ens18 { # 链接楼层路由器的接口
router yes
timeout 500
ttl 30000
rule xxx:xxx:c00:72:114:514::/96 { # 准备给WG的子网
static
}
}
接下来启动服务1
2systemctl start ndppd
systemctl enable ndppd
效果图
问题
这样设置相当于我的服务器占据了整个xxx:xxx:c00:72:114:514::/96
,不过IPv6这么多占几个也没关系的吧~~~😀
IPv4的进阶部署方案
理论上也可以用相同的方式得到一个工作室的10.0.117.xxx
作为wireguard的ip地址,但是我没试过,毕竟也是内网IP,下面是一些资料。
代理ARP: BridgeNetworkConnectionsProxyArp
代理DHCP: parprouted
性能优化
可以按照这里调整MTU
https://gist.github.com/nitred/f16850ca48c48c79bf422e90ee5b9d95