利用工控机搭建软路由实现校园网单账户多用


闲话

今年考上了自己学校的研究生后,被分配到了学校的双人间,入住后发现宿舍里面只有一个可用网口(因为宿舍是单人间改的双人间,还特别小),本科期间舍友搭了个软路由用于提供宿舍内部使用无线网络(因为校园网的无线网太差了),因此向其寻求帮助并了解到了软路由的一些基本知识,故而有了这篇学习笔记

–2025.6.23二更– 因为隔壁宿舍的个人需要,他们也打算搞一个软路由来实现多用,所以帮了帮忙,在此期间又遇到了好些问题,遂补充一下笔记

知识点

路由转发、DHCP、iptables、校园网

搭建过程:

① 硬件购置

  • 先去闲鱼上购买一个二手的工控机(这里使用的是J1900软路由工控机),要求搭配双网口(千兆最好),内存和硬盘无要求(有个人需求可以让店家帮你升级配置,一般应该可以diy的)
  • 然后再购置一个路由器或者交换机,用于后续的多设备联网(或者搭wifi)
  • 还要备好若干网线,一条vga线或者hdmi线(有些工控机的显示口是vga的,你得接上屏幕了才能操作,不然你看啥)

② 环境准备

  • 工控机刷一个linux环境(切记切记最好让店家帮你刷好一个干净的系统,否则你自己还得多一个装系统的步骤),这边用到的是Ubuntu22.04
  • 去学校网站下一个linux版本的校园网认证系统(没有linux版本的话可能就寄了),这边用到的是锐捷的linux版本,然后拉到工控机里(用u盘cp或者直接在工控机里拉取都行,直接拉取的前提是有网)

③ 搭建

可以先给工控机通上网络,以便后续的一些软件包的下载: 将前文下载的linux版本的锐捷客户端在工控机中运行,认证成功后方可通网

  • 准备完毕后,工控机接上电源和屏幕,进入系统开始搭建环境(记得找店家要root的密码)。
  • 建议先修改一下系统的apt源,方便后续的工具下载,推荐aliyun源:

补充: 这边建议给自己的工控机系统装上ssh,然后网络认证成功后,用自己的主机通过ssh连接上工控机后再进行后续的操作,不然敲指令还挺累的

 1sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak
 2sudo vim /etc/apt/sources.list
 3
 4#写入以下内容
 5deb https://mirrors.aliyun.com/ubuntu focal main restricted
 6deb https://mirrors.aliyun.com/ubuntu focal-updates main restricted
 7deb https://mirrors.aliyun.com/ubuntu focal universe
 8deb https://mirrors.aliyun.com/ubuntu focal-updates universe
 9deb https://mirrors.aliyun.com/ubuntu focal multiverse
10deb https://mirrors.aliyun.com/ubuntu focal-updates multiverse
11deb https://mirrors.aliyun.com/ubuntu focal-backports main restricted universe multiverse
12deb https://mirrors.aliyun.com/ubuntu focal-security main restricted
13deb https://mirrors.aliyun.com/ubuntu focal-security universe
14deb https://mirrors.aliyun.com/ubuntu focal-security multiverse
15
16#保存后,执行下面指令
17sudo apt update
  • 如果系统没有ifconfig命令,命令不可用,则安装net-tools工具:
1sudo apt install net-tools
2
3#然后就可以查看网卡信息
4ifconfig -a
  • (非必要)修改网卡名为eth0,eth1(每个人的网卡名不同):
 1sudo vim /etc/default/grub
 2
 3#找到GRUB_CMDLINE_LINUX=""改为
 4GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0" 
 5
 6#保存后执行
 7sudo grub-mkconfig -o /boot/grub/grub.cfg
 8
 9#修改/etc/netplan/中的yaml文件(每个人的可能会有不同)
10sudo vim /etc/netplan/00-installer-config.yaml
11
12#将对应的网卡名改为eth0和eth1,后续把0做wan口,1做lan口
13
14#保存后,重启工控机
15sudo reboot now
  • 配置网卡地址,将lan口(eth1)设置为静态ip(这里必须要注意,你得确认好你工控机是哪个网卡是lan哪个网卡是wan,根据自己的情况去调整,wan口对应的网卡在运行锐捷认证成功后会被直接分配ip,所以没ip的那个就是lan口)
 1# 修改/etc/netplan/中的yaml文件(每个人的可能会有不同)
 2
 3# 参考如下(要注意空格 缩进等)
 4# This is the network config written by 'subiquity'
 5network:
 6  ethernets:
 7    eth0:
 8      dhcp4: yes
 9    eth1:
10      dhcp4: no
11      optional: true
12      addresses: #ip地址要跟wan口在不同网段,比如wan口的网段为192.168.200.xxx的话,lan口就得换成别的
13        - 192.168.99.1/24
14  version: 2
15  renderer: networkd
16  
17# 保存后执行
18sudo netplan apply
19
20# 执行后,通过ifconfig查看eth1网卡应该会显示有对应的ip地址,与上面设置的为同一个,如果没有,可能是配置文件中的一些细节没写好(缩进,空格等)
21# 如果是缩进没有问题的话,就看看是不是lan口没有接网线,拿网线跟你的机子或者路由器接上看看有没有分配到ip
22# 如果还是没有分配到ip,看看是不是有些服务器没有成功启动,比如说systemd-networkd这个服务
  • 配置dhcp(用于给客户机分配ip)
 1#安装isc-dhcp-server
 2sudo apt-get install isc-dhcp-server
 3
 4#修改配置文件/etc/default/isc-dhcp-server(如果需要用到ipv6,也可以将interfacesv6一并配置)
 5INTERFACESv4=""
 6	↓↓↓↓↓
 7INTERFACESv4="eth1"
 8
 9
10#修改/etc/dhcp/dhcpd.conf
11option domain-name-servers ns1.example.org, ns2.example.org;
12	↓↓↓↓↓
13option domain-name-servers 8.8.8.8,114.114.114.114;
14
15#在末尾增加以下内容
16subnet 192.168.99.0 netmask 255.255.255.0 {
17  range 192.168.99.100 192.168.99.254;
18  option domain-name-servers 192.168.99.1;
19  option subnet-mask 255.255.255.0;
20  option broadcast-address 192.168.99.255;
21  option routers 192.168.99.1;
22}
23
24#修改/etc/dhcp/dhcpd6.conf(没有ipv6需要可不配置)
25#在末尾添加以下内容
26subnet6 2001:db8:0:1::/64 {
27        # Range for clients
28        range6 2001:db8:0:1::129 2001:db8:0:1::254;
29
30        # Range for clients requesting a temporary address
31        range6 2001:db8:0:1::/64 temporary;
32
33        # Additional options
34        option dhcp6.name-servers fec0:0:0:1::1;
35        option dhcp6.domain-search "domain.example";
36
37        # Prefix range for delegation to sub-routers
38        prefix6 2001:db8:0:100:: 2001:db8:0:f00:: /56;
39
40        # Example for a fixed host address
41        host specialclient {
42                host-identifier option dhcp6.client-id 00:01:00:01:4a:1f:ba:e3:60:b9:1f:01:23:45;
43                fixed-address6 2001:db8:0:1::127;
44        }
45}  
46
47
48#重启dhcp server
49sudo systemctl restart isc-dhcp-server
50sudo systemctl status isc-dhcp-server
  • 开启linux内核的路由转发功能
 1#开启root用户
 2su -
 3
 4#把eth1网卡的数据包通过nat转发到eth0,根据自己的需要修改相应的网卡
 5echo "1" > /proc/sys/net/ipv4/ip_forward
 6
 7#如果想要永久开启ip转发,则需要修改以下内容:
 8sudo vim /etc/sysctl.conf
 9
10# 找到下面这行 去掉注释 改为1 然后保存
11net.ipv4.ip_forward = 1
12
13
14# 转发规则,根据你自己的wan口和lan口的网卡情况调整
15iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
16iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
17iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
18
19#保存iptables规则
20sudo iptables-save > /etc/iptables.rules
21sudo iptables-save > /etc/iptables/rules.v4
22
23#安装iptables-persistent软件包,安装过程会询问是否将当前iptables规则保存到文件中,选择y,继续安装
24sudo apt-get install iptables-persistent
25
26#安装完成后,iptables-persistent就会自动加载保存的iptables规则文件,重启后也会自动加载
  • 配置dns
 1#停用系统自带的dns
 2sudo systemctl disable systemd-resolved
 3sudo systemctl stop systemd-resolved
 4
 5#删除符号链接的resolv.conf文件
 6sudo rm /etc/resolv.conf
 7echo "nameserver 8.8.8.8" > /etc/resolv.conf
 8
 9#安装dnsmasq
10sudo apt-get install dnsmasq
11sudo systemctl restart isc-dhcp-server
12
13#完成上述流程后,正常情况下客户机电脑可以通过eth1自动获取ip和dns
  • 通过lan口(eth1)连接客户机(自己的电脑),此时应该可以顺利接通网络

④可能会遇到的问题

可能遇到的问题都暂时写在正文里了