私はQEMU(当時...)でSunOS 4.1.4を実行しており、tap
ホストシステムのデバイスを介してネットワークしています。これで仮想マシンを起動します...
qemu-system-sparc \
-rtc base=utc \
-drive file=sunos-root.img,format=raw,bus=0,unit=0 \
-drive file=sunos-home.img,format=raw,bus=0,unit=1 \
-drive file=sunos-gnu.img,format=raw,bus=0,unit=2 \
-nic tap,br=virbr0,helper=/usr/libexec/qemu-bridge-helper \
-nographic
...間欠的に動作するように見えるネットワークを除いて、すべてがうまく動作しています。
SunOSが起動すると、何よりも.telnetサーバーとrshellサーバーを介して実行されますinetd
。 Tapインターフェイスはブリッジvirbr0
(192.1681.22.1
)に接続され、SunOS仮想マシンは次のように割り当てられます192.168.122.103
。
bash-3.2# ifconfig le0
le0: flags=63<UP,BROADCAST,NOTRAILERS,RUNNING>
inet 192.168.122.103 netmask ffffff00 broadcast 192.168.122.255
ether 52:54:0:12:34:56
運が良ければ、ホストから簡単にダウンロードしてtelnet 192.168.122.103
動作します。rsh
それ以外の場合はそうではなく、その理由を理解していません。これをループで実行すると...
while ! rsh -l root 192.168.122.103 /bin/true; do
sleep 1
done
...そうです。最後に働く
アウトバウンドトラフィック~から仮想マシンは常に動作します(たとえば、ホストからバナーを確実にtelnet 192.168.122.1 22
取得できますSSH-2.0-OpenSSH...
)。tcpdump
仮想マシンに Telnet を接続できないときに Tap インターフェイスで実行すると、次のようになります。
18:39:07.584861 IP 192.168.122.1.40270 > 192.168.122.103.telnet: Flags [S], seq 2038492576, win 64240, options [mss 1460,sackOK,TS val 2376785260 ecr 0,nop,wscale 7], length 0
18:39:07.585177 IP 192.168.122.103.telnet > 192.168.122.1.40270: Flags [S.], seq 2034944001, ack 2038492577, win 4096, options [mss 1460], length 0
18:39:07.585205 IP 192.168.122.1.40270 > 192.168.122.103.telnet: Flags [.], ack 1, win 64240, length 0
18:39:07.585279 IP 192.168.122.1.40270 > 192.168.122.103.telnet: Flags [P.], seq 1:28, ack 1, win 64240, length 27 [telnet DO SUPPRESS GO AHEAD, WILL TERMINAL TYPE, WILL NAWS, WILL TSPEED, W
ILL LFLOW, WILL LINEMODE, WILL NEW-ENVIRON, DO STATUS, WILL XDISPLOC [|telnet]
18:39:07.773325 IP 192.168.122.103.telnet > 192.168.122.1.40270: Flags [.], ack 28, win 4069, length 0
18:39:10.323018 IP 192.168.122.1.40270 > 192.168.122.103.telnet: Flags [P.], seq 28:30, ack 1, win 64240, length 2
18:39:10.373287 IP 192.168.122.103.telnet > 192.168.122.1.40270: Flags [.], ack 30, win 4067, length 0
18:39:11.401927 IP 192.168.122.1.40270 > 192.168.122.103.telnet: Flags [P.], seq 30:32, ack 1, win 64240, length 2
18:39:11.573256 IP 192.168.122.103.telnet > 192.168.122.1.40270: Flags [.], ack 32, win 4065, length 0
18:39:12.672424 IP 192.168.122.1.40270 > 192.168.122.103.telnet: Flags [P.], seq 32:34, ack 1, win 64240, length 2
18:39:12.773266 IP 192.168.122.103.telnet > 192.168.122.1.40270: Flags [.], ack 34, win 4063, length 0
ご覧のとおり、トラフィックが前後に行くようですが、まだ機能していません。動作時の様子は次のとおりです。
18:41:38.435167 IP 192.168.122.1.40282 > 192.168.122.103.telnet: Flags [S], seq 404147648, win 64240, options [mss 1460,sackOK,TS val 2376936111 ecr 0,nop,wscale 7], length 0
18:41:38.435489 IP 192.168.122.103.telnet > 192.168.122.1.40282: Flags [S.], seq 2054336001, ack 404147649, win 4096, options [mss 1460], length 0
18:41:38.435525 IP 192.168.122.1.40282 > 192.168.122.103.telnet: Flags [.], ack 1, win 64240, length 0
18:41:38.435585 IP 192.168.122.1.40282 > 192.168.122.103.telnet: Flags [P.], seq 1:28, ack 1, win 64240, length 27 [telnet DO SUPPRESS GO AHEAD, WILL TERMINAL TYPE, WILL NAWS, WILL TSPEED, W
ILL LFLOW, WILL LINEMODE, WILL NEW-ENVIRON, DO STATUS, WILL XDISPLOC [|telnet]
18:41:38.459878 IP 192.168.122.103.telnet > 192.168.122.1.40282: Flags [P.], seq 1:4, ack 28, win 4069, length 3 [telnet DO TERMINAL TYPE [|telnet]
18:41:38.459971 IP 192.168.122.1.40282 > 192.168.122.103.telnet: Flags [.], ack 4, win 64237, length 0
18:41:38.460564 IP 192.168.122.103.telnet > 192.168.122.1.40282: Flags [P.], seq 4:34, ack 28, win 4096, length 30 [telnet WILL SUPPRESS GO AHEAD, DONT NAWS, DONT TSPEED, DONT LFLOW, DONT LI
NEMODE, DONT NEW-ENVIRON, WONT STATUS, DONT XDISPLOC, SB TERMINAL TYPE SEND SE [|telnet]
ご覧のとおり、今回はTelnetプロトコルの交換が正常に完了しました。
これはファイアウォールの問題ではありません(制限なしで-j ACCEPT
チェーンの上部にルールを追加しましたが、このトラフィックはチェーンに到達しません)。INPUT
OUTPUT
FORWARD
たぶんQEMUランスイーサネットドライバに何か問題があるのでしょうか?