宣告了一大块/48(甚至更大)不可能就一个机器用,通用得打洞方式有SIT/GRE等等,不过呢,我这里还有一个,就是WireGuard,曾经Linux说他是个艺术品,真是不可多得的工具,不过这种方式并不是用来特殊上网的,因为他是基于UDP并不能良好地这么用.
注意:这里没有WG基础,所以没基础请先补习.
先启动转发:
echo "net.ipv6.conf.all.forwarding=1" >> /etc/sysctl.conf
sysctl -p
宣告端(上游):
[Interface]
PrivateKey = YJ0pyY688+Xd0vgasc66Xfmhnahn2+BpAl0Pv2YaulA=
Address = 2001:470:485b::1/128
ListenPort = 56833
DNS = 8.8.8.8
MTU = 1420
[Peer]
PublicKey = plks+56UptSpCZOkbY9MwMbC9emeb88z8OnB1vrVzD4=
AllowedIPs = 2001:470:485b::2/128
下游(被动IP使用端):
[Interface]
PrivateKey = kCUoCLfYMNyj5k6vWuWZvXjLIVUoNFZ5PDS2msNdnVo=
Address = 2001:470:485b::2/128
DNS = 8.8.8.8
MTU = 1420
[Peer]
PublicKey = pUfHzElZl5ORaMAqlJcBHJfFieSTkfyTNJQ4bF2MRUI=
Endpoint = [上游IP]:56833
AllowedIPs = ::0/0
PersistentKeepalive = 25
特点:
- 三层隧道 / 基于UDP协议
- 建立连接数量受限于端口数量 / 系统性能
- 下游IP变更不需要通知上游
- 连接稳定性更强 / 得益于心跳机制
- 防止网段Hijack
如果还需要向下游宣告可路由网段,只需要添加允许路由IP段就可以了.
[Interface]
PrivateKey = YJ0pyY688+Xd0vgasc66Xfmhnahn2+BpAl0Pv2YaulA=
Address = 2001:470:485b::1/128
ListenPort = 56833
DNS = 8.8.8.8
MTU = 1420
[Peer]
PublicKey = plks+56UptSpCZOkbY9MwMbC9emeb88z8OnB1vrVzD4=
AllowedIPs = 2001:470:485b::2/128, 2001:470:485b:1000::/64