Bridge
UML 和 ethertap:我想念什麼?
我想用網路執行我的 UML istance 在主機中我創建腳本
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 istance
/usr/bin/linux ubda=fsroot mem=1024M con0=fd:0,fd:1 con=pts eth0=ethertap,tap0,10.2.0.5
然後我用 minicom 進入 uml istance 並嘗試配置網路
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 規則進行 natting
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
但沒有任何改變。
找到解決方案,在 UML 的配置中我忘記了這一行
ip link set eth0 up
在路線線之前
我也改變了方法,使用 enp1s0 代替橋接,用 ethertune 代替 ethertap
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
工作正常