web-dev-qa-db-ja.com

Linuxでtun / tapインターフェースを適切に設定する方法は?

基本的に、私はカスタムTCPスタックを作成しようとしています。LinuxカーネルTCPスタックがそれを使用するため、eth0を使用できません。 tun/tapインターフェースを作成し、それを私のカスタムTCPスタックに使用します。

/ etc/network/interfaces:

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

ifconfig

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を使用してもゲートウェイに到達できません。

私がここでどんな間違いをしているのか教えていただければ幸いです。

3
Mr. Nobody

私は2つをブリッジするだけです。その場合、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

(IPアドレスでマスターbr0を構成し、スレーブがそれを共有します)

5
Octavian