将 ip tuntap 替换为 /etc/network/interfaces (或如何在 /etc/network/interfaces 中创建 tun 接口)

将 ip tuntap 替换为 /etc/network/interfaces (或如何在 /etc/network/interfaces 中创建 tun 接口)

我正在使用 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文件找到了一个可行的解决方案。然而,我仍然愿意接受有关更优雅的解决方案的意见(如果有的话!)。谢谢!

相关内容