0%

通过DNS端口白嫖校园网基础设施

前几天发现了通过53端口实现免认证热点上网的方式,在你清不堪的校园网里一试,果然没有防备,于是美滋滋的搭建了一个代理,以后可以免费上网了~

如标题所写,此处是“白嫖校园网基础设施”,实现免登录上网、无限流量上网,但是并不能白嫖校园网,即无法获得教育网的IP地址。同样,公网的服务器也需要购买。

其实道理挺简单的,网关(交换机)都默认放行 DHCP 和 DNS 报文,也就是 UDP53 与 UDP67/68。有些网关(你清网关)甚至不会对报文进行检查,这也就意味着任何形式的数据包都可以顺畅通过。

所以方法就很简单了,随便找个UDP协议的软件,监听53端口就行。可以用原文里提到的SoftEther VPN,但是都3202年了,meet the WireGuard.

搭建WireGuard

其实挺简单的,安装服务端和客户端,写一份配置文件,然后wg-quick up wg0即可。为了支持IPv6我还鼓捣了一会儿,这里提供一下我的配置文件:

1
2
3
4
5
6
7
8
9
10
11
[Interface]
Address = ***/24, ***/64 # 内网IP地址
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o <eth0> -j MASQUERADE; ip6tables -A FORWARD -i %i -j ACCEPT; ip6tables -t nat -A POSTROUTING -o <eth0> -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o <eth0> -j MASQUERADE; ip6tables -D FORWARD -i %i -j ACCEPT; ip6tables -t nat -D POSTROUTING -o <eth0> -j MASQUERADE # 其中 <eth0> 请替换成可连接互联网的网卡名称
ListenPort = 53
PrivateKey = ***

[Peer]
PublicKey = ***
AllowedIPs = ***/32, ***/128
PersistentKeepalive = 25

客户端:

1
2
3
4
5
6
7
8
9
10
[Interface]
PrivateKey = ***
Address = ***/24, ***/64 # 和上面一致
DNS = 8.8.8.8, 2001:4860:4860::8888

[Peer]
PublicKey = ***
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = ***:53
PersistentKeepalive = 25

注意其中用到了两对Key。这样生成:

1
wg genkey | tee privatekey | wg pubkey > publickey

解除53端口占用

Ubuntu默认启动的systemd-resolve会占用53端口。关闭的方法在这里

注意事项

Wireguard的多用户需要注意,不能简单地把IP改成IP段,然后共用一对Key。我这里设备数量少所以手动添加了3个用户。有更好的方法。