SunOS 4.1.4 仮想マシンへの断続的な接続

SunOS 4.1.4 仮想マシンへの断続的な接続

私は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インターフェイスはブリッジvirbr0192.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チェーンの上部にルールを追加しましたが、このトラフィックはチェーンに到達しません)。INPUTOUTPUTFORWARD

たぶんQEMUランスイーサネットドライバに何か問題があるのでしょうか?

関連情報