我正在使用 sh 脚本(粘贴在下面)使用 iproute 和 tun 模式创建 IPv6 tun 接口。
#!/bin/sh
# Create a new TUN interface for WPAN interaction.
ip -6 tuntap add mode tun tun0
# Assign it a global IPv6 address.
ip -6 addr add FF41::2 dev tun0
# Add route to default address of Serial TUN embedded interface.
ip -6 route add FF41::1 dev tun0
# Add route to Unique Local /64 Prefix via tun0.
ip -6 route add FF41:0000:0000:3EAD::/64 dev tun0
# The interface is ready.
ip link set tun0 up
# Enable IPv6 routing on host.
sysctl -w net.ipv6.conf.all.forwarding=1
我想用更干净的方法替换这个脚本(在启动过程中调用)/etc/network/interfaces
,但是,我对如何准确创建这个文件有点困惑。
添加路线的命令,我知道我将用 中适当的 pre-up 节替换它们/etc/network/interfaces
。但是,我不确定如何通知 ifup 要创建的接口是 tun 接口。
现在,我的/etc/network/interfaces
样子是这样的:
# 802.15.4 Network
auto tun0
iface tun0 inet6 static
address FF41::2
netmask 64
pre-up ip -6 tuntap add mode tun tun0
pre-up ip -6 route add FF41::1 dev tun0
pre-up ip -6 route add FF41:0000:0000:3EAD::/64 dev tun0
post-up sysctl -w net.ipv6.conf.all.forwarding=1
在此设备上,我有一个 python 脚本,它使用 pytun 将 tun0 通过串行连接链接到外部设备(使用 802.15.4 无线电)。
编辑:看起来我使用上面的interfaces
文件找到了一个可行的解决方案。然而,我仍然愿意接受有关更优雅的解决方案的意见(如果有的话!)。谢谢!