Twisted Pair:设备配置

Twisted Pair 的测试套件

在运行完整的 Twisted Pair 测试套件之前,需要进行某些系统配置。没有此设置,测试套件将缺乏访问 tap 和 tun 设备所需的权限。一些测试仍然可以运行,但验证 Twisted Pair 是否可以成功地从真实设备读取和写入的集成测试将被跳过。

以下 shell 脚本创建两个 tun 设备和两个 tap 设备,并授予运行 shell 脚本的用户使用它们的权限。运行它来配置您的系统,以便您可以执行完整的 Twisted Pair 测试套件运行。

# Needs to be short enough so that with prefix and suffix, fits into 16 bytes
IDENTIFIER="twtest"

# A tap device without protocol information
sudo ip tuntap add dev tap-${IDENTIFIER} mode tap user $(id -u -n) group $(id -g -n)
sudo ip link set up dev tap-${IDENTIFIER}
sudo ip addr add 172.16.0.1/24 dev tap-${IDENTIFIER}
sudo ip neigh add 172.16.0.2 lladdr de:ad:be:ef:ca:fe dev tap-${IDENTIFIER}

# A tap device with protocol information
sudo ip tuntap add dev tap-${IDENTIFIER}-pi mode tap user $(id -u -n) group $(id -g -n) pi
sudo ip link set up dev tap-${IDENTIFIER}-pi
sudo ip addr add 172.16.1.1/24 dev tap-${IDENTIFIER}-pi
sudo ip neigh add 172.16.1.2 lladdr de:ad:ca:fe:be:ef dev tap-${IDENTIFIER}-pi

# A tun device without protocol information
sudo ip tuntap add dev tun-${IDENTIFIER} mode tun user $(id -u -n) group $(id -g -n)
sudo ip link set up dev tun-${IDENTIFIER}

# A tun device with protocol information
sudo ip tuntap add dev tun-${IDENTIFIER}-pi mode tun user $(id -u -n) group $(id -g -n) pi
sudo ip link set up dev tun-${IDENTIFIER}-pi

关于此配置,有两点需要注意。首先,它使用 172.16.0.0/12 私有使用范围内的地址。如果您的网络配置为已使用这些地址,那么运行脚本可能会导致网络问题。这些地址硬编码到 Twisted Pair 测试套件中,因此此问题不容易避免。其次,这些更改在重启后不会持久保存。如果您希望即使在重启后也能使用此网络配置,则需要以某种方式将上述内容集成到系统的 init 脚本中(此操作在不同系统上的详细信息超出了本文档的范围)。

某些平台可能还需要修改其防火墙规则,以允许测试套件想要传输的流量。添加允许流量到达测试套件使用的地址的防火墙规则应该可以解决此问题。如果您在运行 Twisted Pair 测试套件时遇到超时,那么这可能适用于您。例如,要配置 iptables 防火墙以允许此流量

iptables -I INPUT --dest 172.16.1.1 -j ACCEPT
iptables -I INPUT --dest 172.16.2.1 -j ACCEPT