Linux에서 tun/tap 인터페이스를 올바르게 구성하는 방법은 무엇입니까?

Linux에서 tun/tap 인터페이스를 올바르게 구성하는 방법은 무엇입니까?

기본적으로 사용자 지정 TCP 스택을 만들려고 합니다. 아시다시피 Linux 커널 TCP 스택이 eth0을 사용하기 때문에 eth0을 사용할 수 없습니다. 따라서 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 주소를 구성하면 슬레이브가 이를 공유합니다)

관련 정보