研制云网线

今天, 采购的小路由器(预装OpenWrt)已到货, 我开始研制云网线。具体而言, 就是在服务器和该路由器上配置WireGuard隧道以及WireGuard里面的GRETAP隧道(WireGuard为什么不提供二层隧道模式捏??)。配置的过程比较简单, 坑点在于MTU问题以及IP分组分片: 为了保证GRETAP内部承载的以太网的MTU保持为便于桥接的1500, 就需要对GRE报文的IP分组或WireGuard报文的IP分组进行分片。新版的内核可以通过设置ignore-df选项来开启GRE报文的IP分组的分片, 这发生在WireGuard隧道内部, 因此不会直接跨越其他网络而出现问题; 旧版的内核没有这个选项, 因此只能强行扩大WireGuard隧道的MTU, 然后让系统在发送WireGuard报文(为UDP报文)的IP分组时进行分片。很不幸, 小路由器的内核版本比较老。

考虑到这些分片需要跨越NAT和互联网并最终到达服务器, 我和cyy测试了UDP报文分片在各种网络环境下的表现, 幸运地发现都能正常工作。其中, 我还发现了我的Huawei AR161-S的ACL的一个“特性”: 从分片的第二片开始, 因为有效载荷里没有UDP报文头, 路由器无法得知UDP的端口号, 因此匹配ACL时会当作0号端口来匹配, 因此我一开始测试失败, 修改ACL之后才测试成功。

发表评论

注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)

本文链接:https://twd2.me/archives/17396QrCode