实验性 OpenBSD MAP-E CE 支持(反馈)
摘要
该项目提供补丁和脚本,用于向 OpenBSD 7.8 路由器添加实验性 MAP-E CE(RFC7597)支持,包括内核补丁和一个名为 maped 的配套应用程序。
<p>嗨,各位龙虾们!</p>
<p>我正在测试基于 2021 年原始工作的 OpenBSD MAP-E 支持。我新增了一个补丁和一个小型守护进程来自动处理连接。目前有一个安装正在运行,第二个即将到来。两者均使用 Cosmote FTTH。</p>
<p>如果您对 OpenBSD 的 MAP-E 支持感兴趣并且有时间进行测试,我将不胜感激任何反馈、想法或建议。</p>
<p>仓库:<a href="https://git.sr.ht/~atmosx/openbsd-mape-ce" rel="ugc">https://git.sr.ht/~atmosx/openbsd-mape-ce</a></p>
<p><a href="https://lobste.rs/s/fqqewk/experimental_openbsd_map_e_ce_support">评论</a></p>
查看缓存全文
缓存时间: 2026/05/16 23:17
# ~atmosx/openbsd-mape-ce - 为OpenBSD路由器添加MAP-E CE支持
来源:https://git.sr.ht/~atmosx/openbsd-mape-ce
本仓库包含一系列补丁和脚本,用于为OpenBSD 7.8添加**带封装的地址和端口客户边缘映射**(即MAP-E CE,RFC7597)支持。
[builds.sr.ht status](https://builds.sr.ht/~atmosx/openbsd-mape-ce/commits/main/.build.yml?)
### [#](https://git.sr.ht/~atmosx/openbsd-mape-ce#status) 状态
这是一个实验性项目。请勿将此实现用于生产环境。
### [#](https://git.sr.ht/~atmosx/openbsd-mape-ce#1-setup) 1. 设置
需要以下条件:
1. [openbsd-pf-map-e-ce](https://github.com/toru-mano/openbsd-pf-map-e-ce) 为`pf(4)`添加MAP-E NAT支持。
2. `dhcp6leased(8)` 为基础系统添加MAP-E CE支持。
3. 基本网络配置。
4. 一个用于自动化网络设置流程的配套应用程序。
包过滤补丁([https://github.com/toru-mano/openbsd-pf-map-e-ce](https://github.com/toru-mano/openbsd-pf-map-e-ce))自2021年起已公开可用。应用此补丁可启用MAP-E中的端口映射。一旦`pf(4)`被打上补丁,使用Perl应用程序来启动`gif(4)`接口。
安装以下软件包并创建接口:
```
doas pkg_add git p5-IO-KQueue
echo 'create\nup' > /etc/hostname.gif0
```
下载并解压源代码:
```
cd /tmp
ftp https://cdn.openbsd.org/pub/OpenBSD/7.8/src.tar.gz
ftp https://cdn.openbsd.org/pub/OpenBSD/7.8/sys.tar.gz
cd /usr/src
doas tar xzf /tmp/src.tar.gz
cd /usr
doas tar xzf /tmp/sys.tar.gz
```
### [#](https://git.sr.ht/~atmosx/openbsd-mape-ce#2-patch-the-system) 2. 给系统打补丁
克隆仓库并应用补丁:
```
cd /usr/local/src
doas git clone https://git.sr.ht/~atmosx/openbsd-mape-ce
cd openbsd-mape-ce
doas patch -p0 < /usr/local/src/openbsd-mape-ce/patch/pf-map-e-ce/mape78.patch
doas patch -p0 < /usr/local/src/openbsd-mape-ce/patch/dhcp6leased-mape-softwire46-openbsd78.patch
```
> **注意**:请忽略`split/`目录中的补丁。这些是`dhcp6leased-mape-softwire46-openbsd78.patch`按作用域拆分的精确副本。
重新构建内核并重启:
```
cd /usr/src/sys/arch/amd64/conf
doas config GENERIC.MP
cd ../compile/GENERIC.MP
doas make clean
doas make -j$(sysctl -n hw.ncpu)
doas make install
doas reboot
```
重新构建用户空间工具:
```
cd /usr/src/sbin/pfctl
doas make obj
doas make
doas make install
cd /usr/src/sbin/dhcp6leased
doas make obj
doas make
doas make install
cd /usr/src/usr.sbin/dhcp6leasectl
doas make obj
doas make
doas make install
```
在`/etc/dhcp6leased.conf`中启用`mape`请求:
```
request prefix delegation on pppoe0 for { em1/64 em2/64 em3/64 }
request mape on pppoe0 # 在此接口上启用 MAPE
```
重启`dhcp6leased(8)`并验证MAP-E已启用:
```
rcctl restart dhcp6leased
dhcp6leasectl -l pppoe0
pppoe0 [Bound]
IA_PD 0: 2a02:x:x:x::/56 lease 7 days
MAP-E BR: 2a02:x::406
rule: flags 0 ea-len 14
80.x.x.0/24 2a02:x:x::/42
portparams: offset 6 psid-len 0 psid 0
```
安装`maped`:
```
cd /usr/local/src/openbsd-mape-ce
doas make install
```
这会安装`maped`到`/usr/local/sbin`,并将其辅助程序安装到`/usr/local/libexec/maped`。
编辑`/etc/maped.conf`。将`WAN_IF`、`LEASE_IF`、`LAN_NET`、`GIF_IF`、`LEASE_FILE`和`PF_ANCHOR_FILE`设置为与本地系统匹配。
启用`maped`服务:
```
doas rcctl enable maped
doas rcctl start maped
doas rcctl check maped
```
有关命令行选项、文件和辅助程序路径,请参阅`maped(8)`。
检查`gif0`接口和`mape`锚点。输出应类似于:
```
ifconfig gif0
gif0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1452
index 11 priority 0 llprio 3
encap: txprio payload rxprio payload
groups: gif egress
tunnel: inet6 2a02... --> 2a02... ttl 64 nodf ecn
inet 87.x.x.x --> 0.0.0.1 netmask 0xffffffff
doas pfctl -a mape -sr
match out on gif0 inet from (gif0) to any nat-to (gif0) round-robin map-e-portset 6/6/63
match out on gif0 inet from 192.168.121.0/24 to any nat-to (gif0) round-robin map-e-portset 6/6/63
match out on gif0 inet from 192.168.122.0/24 to any nat-to (gif0) round-robin map-e-portset 6/6/63
match out on gif0 inet from 192.168.123.0/24 to any nat-to (gif0) round-robin map-e-portset 6/6/63
pass out quick on pppoe0 inet6 proto ipencap from 2a02... to 2a02...
pass in quick on pppoe0 inet6 proto ipencap from 2a02... to 2a02...
pass out quick on gif0 inet from (gif0) to any flags S/SA
pass in quick on gif0 inet from any to (gif0) flags S/SA
```
### [#](https://git.sr.ht/~atmosx/openbsd-mape-ce#help-and-testing) 帮助与测试
欢迎将报告、问题和补丁发送到项目的邮件列表:`~atmosx/[email protected]`。
相似文章
GEFS on OpenBSD: 早期预览版
GEFS,一个安全可靠且支持快照的文件系统,其早期预览版已移植到 OpenBSD。该移植版本是实验性的,存在若干问题,但已开放供社区测试。
SOCKMAP - 未来的TCP拼接
Cloudflare 探索利用Linux内核的SOCKMAP基础设施进行TCP套接字拼接,从而减少用户空间开销,并实现更高效的反向代理数据转发。
基于 NetBSD 的研究
本 NetBSD 画廊页面重点展示了各类基于该操作系统的学术及工业研究项目,包括 NASA 的卫星 TCP 实验、KAME IPv6/IPsec 项目以及高速网络演示。
OpenBSD 勘误流程:从报告到补丁
本文讨论了 OpenBSD 的勘误流程,详细介绍了在 OpenBSD 操作系统中如何报告和修补漏洞。
OpenBSD 7.9 发布
OpenBSD 7.9 已发布,包含针对 arm64、amd64、luna88k、riscv64 等架构的平台特定改进,以及各种错误修复和增强的硬件支持。