私自身は今でも PC-DOS 環境を VM などで保管していて、当時のソフトウェアやゲームなどを楽しむことがあります。

その際、VM だけでなく DOSBox を使うこともあります。「PC/AT 互換機の DOS エミュレータ」で、比較的簡単に PC-DOS 環境を再現してくれます。後は自分のホスト PC に当時の PC-DOS で動くソフトウェアを一式そろえて、そのディレクトリを DOSBox からマウントするだけで、自分の使いたいソフト/ゲームの多くが利用できます。普通に使うだけなら非常に手軽なのですが、ただ日本語化が少し面倒だったり、ネットワーク機能を拡張したりしようとすると一気にハードルが上がる、というものだと理解しています。

この DOSBox の機能拡張版である DOSBox-X というものがあります。DOSBox-X では初めから日本語化が容易にできるよう準備されていたり、「PC98 モード」と呼ばれる、PC-9801 互換の MS-DOS で動くモードが用意されていたり、またネットワーク機能(TCP/IP スタック)についても対応済み、とされていました。ただ実際に DOSBox-X でネットワーク機能を有効にしたことはこれまでありませんでした。  先日、とある要件で「TCP/IP の使える DOS 環境」が必要になり、DOSBox-X で環境構築に挑みました。ちょっとクセのある内容だったこともあり、今後の備忘録目的でブログにまとめておきます。


【前提条件】
- ホスト OS: Windows 11(有線 LAN でインターネットに接続
- DOSBox-X: バージョン 2026.05.02
- DOSBox-X に設定する IP アドレス
  - IP: 192.168.0.123
  - ネットマスク: 255.255.255.0
  - デフォルトゲートウェイ: 192.168.0.1
  - ネームサーバー: 8.8.8.8

今の時点での私の結論はホスト OS が Windows の場合、ホスト OS は有線 LAN を使ってインターネット接続をしている、というのが DOSBox-X で TCP/IP 通信を使う前提となるようです(WiFi では NG 、という意味です)


【TCP/IP を使う上で必要なソフト】
  - 16bit DOS 用の TCP/IP スタックとなるソフトであり、ping.exe などのツールも同梱されています
  - DOSBox-X に仮想の NE2000 互換 NIC を設定するのですが、そのパケットドライバとなるソフトです
  - パケットキャプチャーライブラリ


【設定内容】
ホストコンピュータ(Windows 11)の以下のディレクトリに上述のソフトウェアをインストール/展開済みであると仮定して、以下の説明を続けます(NPCAP はデフォルトインストール先にインストールされているだけでOKです):

C:\
  |- DOSBox-X\        : DOSBox-X はこのフォルダを指定してインストール
  |- mTCP\            : mTCP はこのフォルダ内に展開
    |- packet\        : NE2000.COM はここへコピー
    :

まず C:\mTCP\mtcp.cfg というテキストファイルを以下の内容で用意します。この後設定する NE2000 互換仮想 NIC をロードして、上述の IP アドレス設定するための指定内容が記載されています。この例では 192.168.0.0/24 というネットワーク(ホスト OS が存在しているネットワーク)上で 192.168.0.123 という固定 IP アドレスを使って DOSBox-X を動かそうとしている、という例です:

PACKETINT 0x60
HOSTNAME dosbox
IPADDR 192.168.0.123
NETMASK 255.255.255.0
GATEWAY 192.168.0.1
NAMESERVER 8.8.8.8
MTU 150
TCPBUFFERSIZE 4096
UDPBUFFERSIZE 2048

また DOSBox-X 自体の設定ファイルである dosbox-x.conf(C:\DOSBox-X\ 直下にあります)を以下の内容に書き換えて保存します(書き換え対象部分だけ記載しています):

  :
  :
[ne2000]
ne2000 = true
nicbase = 300
nicirq = 3
macaddr = AC:DE:48:00:12:34
backend = pcap

[ethernet, pcap]
realnic = list
timeout = default
backend = pcap
promiscuos = true

  :
  :

[autoexec]
mount c c:\mTCP
set PATH=%PATH%;c:\;c:\packet
c:
c:\packet\NE2000.COM 0x60 3 0x300
set MTCPCFG=c:\mtcp.cfg

この内容については簡単に補足しておきます。まず [ne2000] セクションがあり、DOSBox-X 内で NE2000 互換の NIC カードを有効にしたい場合は、この中で "ne2000 = true" を宣言します。また nicbase や nicirq を指定しますが、これらはデフォルトのままで問題ありません。macaddr は仮想 NE2000 NIC の Mac アドレスです。適当な値で構いません。そして "backend = pcap" という宣言で PCAP 方式で NE2000 を利用することを宣言します。

ここでの backend で明示的に指定できる値は "auto" を除けば "pcap" か "slirp" です。簡単に言うと PCAP はホスト OS と同じネットワークにブリッジ接続する方式で、一方の SLIRP は独自ネットワークを作って、そこから NAT でホスト OS のネットワークに接続する方式です。

「その2つなら後者がいい」という人も多いと思いますが、残念ながら DOSBox-X でここを SLIRP 指定すると、DOSBox-X 起動時のログに以下のようなメッセージが現れます。これを解決する方法がわからず、SLIRP 接続はあきらめました。メッセージからして現在の Windows 版 DOSBox-X ではネットワーク接続時に SLIRP は使えないのではないかと思っていますが、知見のある方がいらっしゃったらこのあたりの事情を教えてほしいです:
2026051101


ということもあり、[ne2000] セクションには "backend = pcap" という PCAP によるブリッジ接続を指定します。

次の [ethernet, pcap] セクションではブリッジ接続の設定を記載します。まず初回は "realnic = list" という一行を追加してください(後で変更します)。この設定で DOSBox-X を起動して、メニューの ヘルプ - ネットワークインターフェースの一覧 を選択します:
2026051201


すると以下のような画面になり、現在のホスト PC が認識しているネットワークインターフェースの一覧が表示されます。有線 LAN や WiFi だけでなく docker や VM 環境の仮想インターフェースも(使っているのであれば)含まれているはずです:
2026051202


この一覧から有線 LAN のインターフェースを名前を頼りに探します。上の例であれば "12 rpcap://\Device\NPF_{xxx.xx} (Network adapter 'Intel(R) Ethernet Controller (3) I225-V #2' on local host)" と書かれたものがあり、有線 LAN は何となくこれかな? というものが見つかりました。

改めて dosbox-x.conf に戻り、先ほど [ethernet, pcap] セクションの中で "realnic = list" と書いた "list" の部分をこの見つかったインターフェースの番号(上の例であれば "12")に書き換えて保存します:

最終的には以下のような内容で dosbox-x.conf を保存します:
  :
  :
[ne2000]
ne2000 = true
nicbase = 300
nicirq = 3
macaddr = AC:DE:48:00:12:34
backend = pcap

[ethernet, pcap]
realnic = 12
timeout = default
backend = pcap
promiscuos = true

  :
  :

[autoexec]
mount c c:\mTCP
set PATH=%PATH%;c:\;c:\packet
c:
c:\packet\NE2000.COM 0x60 3 0x300
set MTCPCFG=c:\mtcp.cfg

この状態で改めて DOSBox-X を起動すると、mtcp.cfg に記載した内容に従って(上の例であれば 192.168.0.123/24 という IP アドレスで)ネットワークが有効になります。ブリッジ接続しているので、同じネットワーク上の他のサーバーやルーターとも疎通確認ができるはずです。mTCP に ping.exe が付属しているので、これらを使って同一ネットワーク上の他の機器と疎通確認してください:
2026051203


ホスト OS 側で有線 LAN が有効になっていることが前提ですが、これで DOSBox-X を使って TCP/IP ネットワーク環境が整えることができました。
無線 LAN(WiFi) でもできる方法ご存知の方がいたら教えてください。Windows でなければいけるのかな・・