获得 AMPRNet 的地址分配后,就可以尝试将设备接入 AMPRNet;由于目前 ampr 位于 ucsd 的网关使用 ipip tunnel 协议连接个人网关,以及出于配置方便几乎所有个人网关之间同样也使用 ipip tunnel 互联,所以你的机器需要有一个公网可路由的静态 IPv4 地址,但是通常 ISP 不会提供静态地址而是使用 NAT 技术(无法使用 ipip tunnel),或者需要额外的费用才能获得分配,租一个带有静态地址的 VPS 可能会更划算(根据 IPXO 的数据,市场平均一个IPv4租赁费用为 0.4-0.5 $/mo)。
注意:ipip tunnel 本身不会对封装的数据进行加密
首先需要在 portal 中新建一个网关,填入你的网关地址和对应的域名,amprgw 会每小时验证整合一次所有网关,并且只允许条目内的网关与其建立连接,所以你的网关可能需要等待最长一个小时才能与 amprgw 建立连接。
此外,amprgw 会过滤没有 rdns 记录的 44net ip 流量,所以如果你希望地址能够通过 amprgw 被公网访问,需要在 portal 为你的子域名添加对应的 A 记录,系统会为对应的 ip 添加 rdns 记录。
允许内核转发流量:
sysctl -w net.ipv4.ip_forward=1
使用 ip 命令配置虚拟网卡:
ip tunnel add ampr mode ipip local <你的静态地址> ttl 64
ip link set dev ampr up
ifconfig ampr mtu 1480
#添加本机地址,以cidr形式会自动配置掩码
ip addr add <你给本机分配的地址> dev ampr
# 44.1.0.0/16 为 amprnet 的其它网络设施
# 经过网关会增加中转次数
#ip rule add to 44.1.0.0/16 table main priority 180
# 源地址为你的分配地址会使用路由表44
#ip rule add from <你的分配地址块> table 44 priority 192
# 目标地址为这些会使用路由表44
ip rule add to 44.0.0.0/9 table 44 priority 195
ip rule add to 44.128.0.0/10 table 44 priority 195
# 默认网关为 169.228.34.84
ip route add default dev ampr via 169.228.34.84 onlink table 44
注意:实际尝试使用 /etc/network/interfaces 管理隧道时,配置需要有明确的 endpoint,不太适用这里的情况,因为我们不止有一个 ‘endpoint’
配置完这些后,就可以与 amprgw 建立 ipip tunnel 了,但是 amprgw 会过滤通过它来访问其它存在个人网关的地址块,也就是你同时也需要与其它个人网关进行直接建立 ipip tunnel。这里有两种方法,一种是你通过 portal api 主动获取所有个人网关数据再解析写入路由表中,第二种是使用 ampr-ripd,监听来自 amprgw 每5分钟广播的数据写入路由表。
这里使用第二种,编译好后运行以下命令:
./ampr-ripd -s -r -t 44 -i ampr -a <你的分配地址块>
通过 ip route show table 44
查询路由表44 验证是否生效
linux 上可以开启这个功能,防止外部 traceroute 44net 子网内部时,内核通过静态地址而不是 44net 地址返回 icmp 包
sysctl -w net.ipv4.icmp_errors_use_inbound_ifaddr=1
实测隧道速度大约为 50-100 Mbps
接下来,你可以尝试其它方式进行组网。。。