UML과 ethertap: 내가 놓치고 있는 것이 무엇인가?

UML과 ethertap: 내가 놓치고 있는 것이 무엇인가?

네트워크를 통해 UML 인스턴스를 실행하고 호스트에서 스크립트를 생성했습니다.

USER=myname
BRIDGENAME=br0
tunctl -t tap0 -u $USER
ip link set tap0 up
/usr/sbin/brctl addif $BRIDGENAME tap0
ip addr add 10.2.0.5/24 dev tap0

Tap0이 생성되고 오류가 보고되지 않습니다. 그 후 UML 인스턴스를 시작합니다.

/usr/bin/linux ubda=fsroot mem=1024M con0=fd:0,fd:1 con=pts eth0=ethertap,tap0,10.2.0.5

그런 다음 minicom을 사용하여 UML 인스턴스에 들어가서 네트워크 구성을 시도했습니다.

ip addr add 10.2.0.6/24 dev eth0
ip route add default via 10.2.0.5
Error: Nexthop has invalid gateway.

내가 무엇을 놓치고 있나요? 왜 소통하지 않습니까? 나는 또한 대화를 위해 고전적인 iptables 규칙을 사용해 보았습니다.

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -i tap0 -o br0 -j ACCEPT
iptables -A FORWARD -i br0 -o tap0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT 
iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE

그러나 아무것도 변하지 않습니다.

답변1

해결책을 찾았습니다. UML 구성에서 이 줄을 잊어버렸습니다.

ip link set eth0 up

경로 전

또한 접근 방식을 변경하고 브리지 대신 enp1s0을 사용하고 ethertap 대신 ethertune을 사용했습니다.

a) 먼저 tap0을 만듭니다.

sudo ip tuntap add tap0 mode tap
sudo ip addr add 10.2.0.5/24 dev tap0
ip link set tap0 up

b) 그런 다음 iptables 규칙을 적용합니다.

iptables -A FORWARD -i tap0 -o enp1s0 -j ACCEPT
iptables -A FORWARD -i enp1s0  -o tap0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT 
iptables -t nat -A POSTROUTING -o enp1s0 -j MASQUERADE

c) 마지막으로 인스턴스를 실행합니다.

linux ubda=fsroot mem=1024M con0=fd:0,fd:1 con=pts eth0=tuntap,tap0,10.2.0.5

d) 네트워크를 구성한 경우

ip addr add 10.2.0.6/24
ip link set eth0 up
ip route add default via 10.2.0.5

잘 작동

관련 정보