ある日いきなり、VMware 上のゲスト OS (CentOS) に、TeraTerm や WinSCP でアクセスできなくなってしまった。
解決に随分と時間がかかってしまったが、はじめに結論を書いてしまうと「VMware をNAT からブリッジ接続に変更」と「iptables を一度、手動で起動する」、この2つが必要だった。
症状としてはこんな感じ
実は「ある日いきなり」と言うとチョット語弊があって、実はこのゲストOSは、2年もの間利用していなかったのだ。
2年ぶりに起動したら、SSH接続できなくなっていたのだ。
- TeraTerm では「ホストに接続できません」というエラーが発生してしまう。
▲クリックで拡大 - WinSCP では、「ネットワークエラー: "192.168.**.**"への接続がタイムアウトしました」というエラーが発生してしまう。
▲クリックで拡大 - yum update などは普通に実行できるので、ネット接続はできている模様。ホスト側との接続のみ、上手く行かなっカンジ。
この2年で (手元の環境で) 変化したもの
- PC (ホストOS) を買い替えている。
- OS は Windows 10 v1703 から v1909 へ。
- VMwareも何度かバージョンアップしている。
(ゲストOS作成時のVMwareのバージョンは12)
ゲストOSそのものには何も手を加えていないが、何かしらの設定が現状の環境にそぐわなくなっているものと思われる。
とりあえず、ホストOS側から ping すら通らないので、ネットワーク設定の何かしらがおかしくなっているものとして、調査を開始する。
まずネット情報を漁ってみる
ネット上で似たような症状がないかと検索をかけてみると、
- 「VMwareの仮想マシンのネットワーク設定がNATになっているのではないか」
・・・・NATの場合、ホストOSとネットワークが異なる - 「ゲストマシンのネットワーク設定をブリッジに変える」
・・・・ホストOSと同じネットワークに参加する
このような情報を非常に多く目にした。
手元の VMware は NAT 接続になっている。
- 2年前まで、VMware も Windows も、ネットワークは初期設定のままで ゲストOSにSSH接続できていた
- 前の環境が NAT だったかブリッジだったのか覚えていない。
デフォルトで繋がっていたのでまったく気にしていなかった。
よくわからないが、いつの間にか VMware か Windows どちらか (もしくは両方) の初期設定が変更になっている、ということなのだろうか?
とりあえず、ネットワーク設定をブリッジ接続に変えてみよう。
実際の手順ここから
VMware のネットワーク設定をブリッジ接続にするには、以下2点の確認を行う。
ホストOS (Windows 10) 側の設定確認
まずは、ホストOS (Windows 10) のネットワーク設定を確認する。
▲クリックで拡大
コントロールパネルを開き、「ネットワーク接続」を開く。
それぞれの接続先で、プロパティを確認する。
- メインで利用している接続先にて「VMware Bridge Protocol」にチェックが入っている事を確認する
- その他の接続先(VMware Virtual Ethernet Adapter for VMnet など)では、「VMware Bridge Protocol」のチェックが外れている事を確認する
ここまでのチェックが終われば、第一段階は終了。
VMware 側の設定確認
次に VMware を起動、目的のゲストOSを選択する。
▲クリックで拡大
「仮想マシン設定の編集」をクリックする
「ネットワークアダプタ」を選択する。
そして「ネットワーク接続」の項目をチェックする
▲クリックで拡大
「ネットワーク接続」が「NAT」になっていたら「ブリッジ接続」に変更する。
「物理ネットワーク接続の状態を複製」にチェックを入れ、「アダプタの設定」ボタンを押す。
先の Windows 側の設定で、「VMware Bridge Protocol」にチェックを入れた接続先のみにチェックを入れ、OKを押す。
以上で、VMware のネットワーク設定をブリッジ接続に変更する手順はおわり。
ここまでの結果
まだ TeraTerm や WinSCP でアクセスできない。
▲クリックで拡大
さらに、ifconfig を打ってみると、NAT 接続の時には表示されていた ipv4 アドレスすら表示されなくなってしまっている。
▲クリックで拡大
なにやら状況は悪化しているようにも見える。
この辺からドツボにハマってしまい、何が原因なのか、気が付くのに相当の時間がかかってしまったが、結論は以下であった。
結論: ブリッジ接続に変更したら、ゲストOSの iptables でエラーが出ていた。
VMware をブリッジ接続に変更してゲストOSを起動すると、どうやら iptables でエラーが発生してしまうようで、自動起動しなくなってた。
エラーは軽微なものであったらしく、
「systemctl restart iptables」
のみで iptables は無事に起動した。念のためゲストOSを再起動してみたが、iptables は無事 自動起動する事が確認できた。一度起動してしまえば大丈夫らしい。
▲クリックで拡大
iptables が起動していれば、ブリッジ接続したゲストOS上の ifconfig で、ipv4 のアドレスも確認できるようになっている。
そして、TeraTerm や WinSCP でSSH接続が可能になった。
▲クリックで拡大
TeraTerm でユーザー名とパスフレーズ入力画面まで到達。もちろん、ログインも無事行うことが出来た。
これで、ようやく VMware 上の CentOS に SSH 接続が行えるようになった。
最後に確認
念のため、バックアップしていたゲストOSで同じ手順を試してみた。 やはり
「VMware をブリッジ接続に変更」
「iptables を一度、手動で起動する」
この両方が必要だった。
※ ここには書いていないけど、途中で色々な箇所を弄っていた。それらは関係なかった感じ。
余談
- 私の場合、複数の ゲストOS CentOS を所有しているが、ブリッジに変更のみ、 iptablesの再起動が不要な環境もいくつかあった。両者の違いはないに等しく、なにが原因で iptables が止まる環境があるのかサッパリ分からない。
- また、「VMware Bridge Protocol」のチェックを外し、NAT 接続で SSH を試みてみたが、これは上手く行かなかった。以前はどのようにしてSSH 接続していたか (初期設定のままで普通に接続できていたこともあり) 全く思い出せない。
このページの情報は以上。