WSL 上の vsftpd にホストPCから FTP 接続できない

WSL 上の ALmaLinux で vsftpd を起動し、SELinux や Firewall によるアクセス制限がないことを確認しホストPC(WSL を実行している Windows 本体)から FTP 接続してみたのだがうまくいかない。

まず、接続先の IP を ipconfig で確認。

C:\Users\朕>ipconfig

Windows IP 構成
<略>
イーサネット アダプター vEthernet (WSL (Hyper-V firewall)):

   接続固有の DNS サフィックス . . . . .:
   リンクローカル IPv6 アドレス. . . . .: fe80::96fb:c228:9f11:d148%44
   IPv4 アドレス . . . . . . . . . . . .: 172.28.192.1
   サブネット マスク . . . . . . . . . .: 255.255.240.0
   デフォルト ゲートウェイ . . . . . . .:

よし、172.28.192.1 だな・・・と思って、そこにアクセス。

C:\Users\朕>ftp
ftp> open 172.28.192.1
> ftp: connect :接続が拒否されました

ありゃ?接続拒否されてんじゃん。

WSL 内部からは FTP サーバへアクセス可能。

[root@PC ~]# ftp localhost
Connected to localhost (127.0.0.1).
220 (vsFTPd 3.0.5)
Name (localhost:root): admin
331 Please specify the password.
Password:adminpassword<実際は表示されない>
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quit

なので、vsftpd は正しく動いている。

で、Gemini に聞いてみると、「IP アドレスが違うんじゃね?」ってことだったので調べてみる。

[root@PC ~]# ip a
<略>
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP
group default qlen 1000
    link/ether 00:15:5d:45:c0:d2 brd ff:ff:ff:ff:ff:ff
    inet 172.28.196.77/20 brd 172.28.207.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::215:5dff:fe45:c0d2/64 scope link proto kernel_ll
       valid_lft forever preferred_lft forever

あり?IP って 172.28.196.77 なの?ホストPCの ipconfig で調べた 172.28.192.1 だと思ってた。これは WSL2 と Windows の環境をつなぐ仮想ネットワークの GW なのね。

というわけで

C:\Users\朕>ftp 172.28.196.77
172.28.196.77 に接続しました。
220 (vsFTPd 3.0.5)
200 Always in UTF8 mode.
ユーザー (172.28.196.77:(none)): admin
331 Please specify the password.
パスワード:adminpassword<実際は表示されない>

230 Login successful.

おお、ログインできた。WSL2 が起動している状態だと、localhost も自動的に WSL 上の 127.0.0.1 に向けてくれるそうだ。なので、

C:\Users\朕>ftp localhost
PC に接続しました。 ←表示はホストPCに接続したと出る
220 (vsFTPd 3.0.5)  ←実際は WSL にフォワードされている
<略>

というわけで接続できる・・・が、Windows から接続する場合、他にもいろいろ問題が。

実は、WSL を起動する度に WSL 側の IP アドレスは変更される。今回は 172.28.196.77 が割り当てられたが、WSL を一旦シャットダウンしてしまうと(Windows 再起動とかで)違う IP アドレスが割り振られてしまう(172.28.207.110 とかかもしれない)。

そのため、バッチファイルなどにこの IP アドレスを固定値で書いていると、次に実行したときにはうまく FTP ができないという状況になる。安全なのは、127.0.0.1 や localhost を接続先にしておくことだね。

で、最凶の問題が、Windows についてくる FTP クライアントは「PASVモードの機能がない」糞ソフトなので、接続まではできるけど、GET も PUT もできましぇん(笑)

トラックバック(0)

このブログ記事を参照しているブログ一覧: WSL 上の vsftpd にホストPCから FTP 接続できない

このブログ記事に対するトラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/7301

コメントする

このブログ記事について

このページは、shinodaが2026年8月31日 23:00に書いたブログ記事です。

ひとつ前のブログ記事は「WSL 上の AlmaLinux で SELinux が有効になっているか?」です。

次のブログ記事は「「兜カフェ」のしょっぱいおにぎり」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら