如果你需要 DN42 配置上的帮助,可以参见《DN42 实验网络介绍(2020 版)》,以及浏览本站之前有关 DN42 的文章。
一些可以帮助你调试的链接
这些链接可以帮助你在 Peering 过程中调试常见的问题。
- 我的 Looking Glass
- 可以查看我这边各个节点的 BIRD 路由软件状态,包括 BGP 链接是否建立、是否收到路由等等。
- 可以对公网和 DN42 内的地址进行 Traceroute。
- 路由 ROA 过滤状态
- 我的网络只允许接收在 DN42 中注册过的路由,以及未知路由(以方便新注册 DN42 的用户)。收到的无效路由或未知路由会被显示在这里。
- 无效路由:这个 IP 段在 DN42 中注册过了,但是实际广播的路由来源与注册信息不符。
- 例如,我注册了
172.22.76.184/29
这个地址段,允许 4242422547(也就是我的 AS)广播。如果你尝试广播这个路由,就会显示在这里。 - 查看无效的 IPv4 路由列表,以 及无效的 IPv6 路由列表。
- 例如,我注册了
- 未知路由:这个 IP 段没有在 DN42 中注册过。
- 一般意味着你把你私人内网的路由信息(例如
192.168.0.0/16
,10.0.0.0/8
等)错误地广播给了其他人。 - 也有可能是你刚注册成功,我的 ROA 信息还没更新。请等待 4-8 小时,然后重启我们的 Peering。
- 也有可能是你在 DN42 中只创建了 inetnum/inet6num 没有创建 route/route6 对象。
- 查看未知的 IPv4 路由列表,以 及未知的 IPv6 路由列表。
- 一般意味着你把你私人内网的路由信息(例如
「1xRTT」(单次来回)对接(Peering)
我住在中国,而你有可能在地球的另一侧。此时我们的一轮邮件(你发一封,我在你睡着时回复,你醒来后查看)需要 24 小时甚至更多。
以下是进行 「1xRTT」 Peering 的说明,意味着我们可以只用两封邮件建立 Peering,一封来自你,一封来自我。即使没有时区差异,「1xRTT」 Peering 仍然能减少很多麻烦。
- 从下面的列表中选择一个服务器。一般你应该选择到你那边延迟(Ping)最低的服务器。
- 如果你有多台服务器加入 DN42,并且愿意的话,我可以同时建立多个 Peering。
- 选择一种 VPN 建立隧道。
- 我偏好使用 WireGuard 和 OpenVPN,但明文 GRE 和 ZeroTier One 也可以。
- 由于 GRE/IPSec 配置非常复杂,而且不同的 IPSec 实现之间常常有严重的兼容性问题,需要耗费几天甚至几周来调试,我不再接受 GRE/IPSec 隧道,已有隧道也可能随时中断。
- 注意:我不与中国大陆的服务器 Peer,以避免可能的法律问题。
- 我也愿意尝试其它种类的 VPN,只要你询问就可以了。
- 我偏好使用 WireGuard 和 OpenVPN,但明文 GRE 和 ZeroTier One 也可以。
- 在你那边配置好 VPN 隧道和 BGP 客户端。你可以假设我会使用以下的配置:
- 基础信息:
- ASN:4242422547
- 公网 IP:见以下列表
- DN42 IPv4(隧道我这端的地址):见以下列表
- 如果你需要为隧道设置一个地址块(例如 /30),这个地址块将来自你的地址池(由你分配给我)。
- 以上设置常见于 Mikrotik 等硬件路由器。
- DN42 IPv6:fe80::2547,用于本地链路(Link-local)连接
- 如果你需要为隧道设置一个地址块(例如 /64),这个地址块将来自你的地址池(由你分配给我)。
- Multiprotocol BGP(MP-BGP):
- 虽然我支持 MP-BGP,但我默认仍会同时配置 v4、v6 两条 BGP 会话。
- 如果你也支持 MP-BGP,只需要一条会话,直接告诉我就行。
- 建立 VPN 隧道:
- WireGuard/OpenVPN 我这端的端口号:你的 ASN 的后五位
- 例如 4242420001 意味着我会使用 20001 端口
- OpenVPN 预共享密钥:你来生成,之后发送给我
- OpenVPN 默认设置:见下
- 如果你无法使用我的默认参数,请设置好你可以接受的参数,然后发送给我。
- ZeroTier One:我会申请加入你的网络
- 如果可以的话,你可以尝试发送加入网络的邀请。
- WireGuard/OpenVPN 我这端的端口号:你的 ASN 的后五位
- 基础信息:
- 将以下信息发邮件给 b980120@hotmail.com:
- 基础信息:
- ASN
- 公网 IP
- 我偏好 IPv4 地址,因为在我的一些服务器上,IPv6 是由隧道提供的(即 HE.NET Tunnelbroker)
- DN42 IPv4 and IPv6(隧道你那端的地址)
- 或者地址块,如果你需要的话
- 对于 IPv6 Peering,需要包括本地链路(Link-local)地址
- 你想和哪台服务器连接
- 建立 VPN 隧道:
- WireGuard/OpenVPN 你那端的端口号
- 如果你不写明,我会假设你使用 22547 端口
- OpenVPN 预共享密钥:由你生成
- ZeroTier One:你的网络 ID(我会申请加入)
- OpenVPN 设置参数(如果你无法使用我的默认参数)
- WireGuard/OpenVPN 你那端的端口号
- 基础信息:
- 等我设置好 VPN 隧道和 Peering,然后回复邮件。一般这时 Peering 就已经成功了。
- 你可以使用我的 Looking Glass 来调试连接。
注:我不建议通过 IRC 联系我。虽然我开着 IRC 客户端,但我每月只会去看一两次信息,除非你主动在邮件中要求。
基本信息
- ASN:4242422547
- IPv4 地址池:172.22.76.184/29 和 172.22.76.96/27
- IPv6 地址池:fdbc:f9dc:67ad::/48
- 我这边的默认端口号:你的 ASN 的后五位
- 服务状态:https://lg.lantian.pub
服务器列表
-
中国香港,V.PS 服务商
- 域名:
v-ps-hkg.lantian.pub
- 公网 IPv4:
95.214.164.82
/v4.v-ps-hkg.lantian.pub
- 公网 IPv6:
2403:2c80:b::12cc
/v6.v-ps-hkg.lantian.pub
- DN42 IPv4:
172.22.76.186
/v4.v-ps-hkg.dn42.lantian.pub
- DN42 IPv6:
fdbc:f9dc:67ad:1::1
/v6.v-ps-hkg.dn42.lantian.pub
- Link-local IPv6:
fe80::2547
- WireGuard 公钥:
xelzwt1j0aoKjsQnnq8jMjZNLbLucBPwPTvHgFH/czs=
- 域名:
-
日本东京,Oracle 服务商
- 域名:
oracle-vm1.lantian.pub
- 公网 IPv4:
132.145.123.138
/v4.oracle-vm1.lantian.pub
- 公网 IPv6:
2603:c021:8000:aaaa:2::1
/v6.oracle-vm1.lantian.pub
- DN42 IPv4:
172.22.76.123
/v4.oracle-vm1.dn42.lantian.pub
- DN42 IPv6:
fdbc:f9dc:67ad:5::1
/v6.oracle-vm1.dn42.lantian.pub
- Link-local IPv6:
fe80::2547
- WireGuard 公钥:
JJUfHeE1ZgyXzo5aoE0tQfk6wZvnVU/d0V3/uSj61ns=
- 域名:
-
美国洛杉矶,BandwagonHost 服务商
- 域名:
bwg-lax.lantian.pub
- 公网 IPv4:
64.64.231.82
/v4.bwg-lax.lantian.pub
- 公网 IPv6:
2001:470:1f05:159::1
/v6.bwg-lax.lantian.pub
- DN42 IPv4:
172.22.76.185
/v4.v-ps-sjc.dn42.lantian.pub
- DN42 IPv6:
fdbc:f9dc:67ad:3::1
/v6.v-ps-sjc.dn42.lantian.pub
- Link-local IPv6:
fe80::2547
- WireGuard 公钥:
zyATu8FW392WFFNAz7ZH6+4TUutEYEooPPirwcoIiXo=
- 域名:
-
美国纽约,VirMach 服务商
- 域名:
virmach-ny1g.lantian.pub
- 公网 IPv4:
45.42.214.121
/v4.virmach-ny1g.lantian.pub
- 公网 IPv6:
2001:470:1f07:54d::1
/v6.virmach-ny1g.lantian.pub
- DN42 IPv4:
172.22.76.190
/v4.virmach-ny1g.dn42.lantian.pub
- DN42 IPv6:
fdbc:f9dc:67ad:8::1
/v6.virmach-ny1g.dn42.lantian.pub
- Link-local IPv6:
fe80::2547
- WireGuard 公钥:
a+zL2tDWjwxBXd2bho2OjR/BEmRe2tJF9DHFmZIE+Rk=
- 域名:
-
卢森堡国 Bissen 市 Roost 村,BuyVM 服务商
- 域名:
buyvm.lantian.pub
- 公网 IPv4:
107.189.12.254
/v4.buyvm.lantian.pub
- 公网 IPv6:
2605:6400:30:f22f::1
/v6.buyvm.lantian.pub
- DN42 IPv4:
172.22.76.187
/v4.buyvm.dn42.lantian.pub
- DN42 IPv6:
fdbc:f9dc:67ad:2::1
/v6.buyvm.dn42.lantian.pub
- Link-local IPv6:
fe80::2547
- WireGuard 公钥:
DkmSBCIgrxPPZmT07DraoCSD/jSByjPkYqHJWfVZ5hM=
- 域名:
推荐配置模板(默认参数)
以下模板均是以你的视角写成,你在自己的服务器上使用这些模板时不用交换两边。
OpenVPN:
proto udp
mode p2p
# 我的(或者你的 Peer 的)服务器 IP
remote 185.186.147.110
# 我的(或者你的 Peer 的)隧道端口,一般是你的 ASN 的后五位
rport 21234
# 你的服务器 IP
local 12.34.56.78
# 你的隧道端口,一般是 22547(或者你的 Peer 的 ASN 的后五位)
lport 22547
dev-type tun
resolv-retry infinite
dev dn42-lantian # 随意修改
comp-lzo
persist-key
persist-tun
tun-ipv6
cipher aes-256-cbc
# 第一个是你的 DN42 内的 IP,第二个是我的(或者你的 Peer 的)
ifconfig 172.21.2.3 172.22.76.185
# 第一个是你的 Link-local IPv6,第二个是我的(或者你的 Peer 的)
ifconfig-ipv6 fe80::1234 fe80::2547
# 隧道启动后运行的脚本:
# 1. 删除 Stable-privacy IPv6
# 2. 设置优先使用的对外连接的 IPv6 地址(例如 fd12:3456:7890::1)
script-security 2
up "/bin/sh -c '/sbin/sysctl -w net.ipv6.conf.$dev.autoconf=0 && /sbin/sysctl -w net.ipv6.conf.$dev.accept_ra=0 && /sbin/sysctl -w net.ipv6.conf.$dev.addr_gen_mode=1 && /sbin/ip addr add fd12:3456:7890::1/128 dev $dev'"
# 设置成我们的隧道的静态密钥
# 可以用 openvpn --genkey --secret static.key 生成
<secret>
-----BEGIN OpenVPN Static key V1-----
0123456789abcdef0123456789abcdef
# ...
# 密钥内容
# ...
0123456789abcdef0123456789abcdef
-----END OpenVPN Static key V1-----
</secret>
WireGuard 配置(用于 wg-quick up
命令):
[Interface]
# 你的 WireGuard 私钥
PrivateKey = ABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFA=
# 你的端口号
ListenPort = 22547
Table = off
# 添加你的 Link-local IPv6(例如 fe80::1234)
PostUp = ip addr add fe80::1234/64 dev %i
# 添加你的 DN42 IPv6 地址(例如 fd12:3456:7890::1)
PostUp = ip addr add fd12:3456:7890::1/128 dev %i
# 第一个是你的 DN42 内的 IP,第二个是我的(或者你的 Peer 的)
PostUp = ip addr add 172.21.2.3 peer 172.22.76.185 dev %i
PostUp = sysctl -w net.ipv6.conf.%i.autoconf=0
[Peer]
# 我的(或者你的 Peer 的)公钥
PublicKey = zyATu8FW392WFFNAz7ZH6+4TUutEYEooPPirwcoIiXo=
# 我的(或者你的 Peer 的)服务器地址和端口号,端口号一般为你的 ASN 的后五位
Endpoint = hostdare.lantian.pub:21234
AllowedIPs = 10.0.0.0/8, 172.20.0.0/14, 172.31.0.0/16, fd00::/8, fe80::/64