如何在 Linux 中正确配置 tun/tap 接口?

如何在 Linux 中正确配置 tun/tap 接口?

基本上我正在尝试创建一个自定义 TCP 堆栈。你可能知道我不能使用 eth0,因为 Linux 内核 TCP 堆栈使用它,因此我需要创建一个 tun/tap 接口并将其用于我的自定义 TCP 堆栈。

/etc/网络/接口:

auto lo
iface lo inet loopback

allow-hotplug eth0
auto eth0
iface eth0 inet static
    address 192.168.1.152
    netmask 255.255.255.0
    broadcast 192.168.1.255
    gateway 192.168.1.1
    dns-server 192.168.1.1

allow-hotplug tap0
auto tap0
iface tap0 inet manual
    pre-up ip tuntap add tap0 mode tap user root
    pre-up ip addr add 192.168.1.153/24 dev tap0
    up ip link set dev tap0 up
    post-up ip route del 192.168.1.0/24 dev tap0
    post-up ip route add 192.168.1.152/32 dev tap0
    post-down ip link del dev tap0

如果配置

inet addr:192.168.1.152 bcast:192.168.1.255 netmask 255.255.255.0

lo:
    inet addr:127.0.0.1 mask 255.0.0.0

tap0:
    inet addr: 192.168.1.153 bcast:0.0.0.0 mask 255.255.255.0

通过以下配置,我可以使用 eth0 访问 wan/lan,但我什至无法使用 tap0 访问我的网关。

如果您能告诉我我在这里犯了什么错误,我将不胜感激。

答案1

我只是桥接两者,在这种情况下,tap0 上不需要 IP 地址,即;

brctl addif br0 tap0
ip link set tap0 master br0

或者如果您还没有安装bridge-utils,那么:

ip tuntap add tap0 mode tap
ip link set dev tap0 up
ip link add br0 type bridge
ip link set tap0 master br0
ip link set eth0 master br0

(配置主机br0的IP地址,从机将共享它)

相关内容