Ubuntu20.04 固定ip設定+VMware(NAT)とSSH接続準備メモ

Ubuntuipアドレスをnetplanとsystemd-resolvedで固定化、
ホストからSSH接続できるようにホスト側(Win)の設定を調整する。
ゲストはNAT接続(VMnet8)。

環境

Windows10 20H2
WSL2 Ubuntu20.04 LTS (ホスト)
VMware Workstation 16
Ubuntu20.04 LTS (NAT)(ゲスト)

netplanでipを固定する

/etc/netplan/hogehoge を編集
nameserversのアドレスは任意のDNSサーバーを記述。

network:
  ethernets:
    ens33:
      dhcp4: false
      addresses: [192.168.47.100/24]
      gateway4: 192.168.47.2
      nameservers:
        addresses: [1.1.1.1,1.0.0.1]
  version: 2
  renderer: networkd

ゲストと通信するための調整

上記設定にて、ネットワークデバイスのaddressesは、C:\ProgramData\VMware\vmnetdhcp.conf のrange外かつsubnet内にしておく。
ゲートウェイC:\ProgramData\VMware\vmnetnat.conf のNAT gateway address。

また、Windowsコントロール パネル\ネットワークとインターネット\ネットワーク接続から、使用しているネットワークデバイスを選択、プロパティから共有タブを開き、共有するアダプタにVMnet8を選択する。
その後、VMnet8のIPv4のプロパティから、アドレスを vmnetdhcp.conffixed-address と同じにする。

編集が終わったら、最後に

netplan try

エラーでなければ(serviceがstopとか出てもENTER押してacceptedなら問題ない)

netplan apply

2021.04.01 追記

netplan tryするとエラーが出る
環境: 無線LAN接続

Job for netplan-wpa-wlp3s0.service canceled.

An error occurred: Command '['systemctl', 'stop', 'systemd-networkd.service', 'netplan-wpa-*.service']' returned non-zero exit status 1.

Reverting.
Warning: Stopping systemd-networkd.service, but it can still be activated by:
  systemd-networkd.socket

以下の方法で解決した。

systemctl stop netplan-wpa-*.service

としてから、直接

netplan try

エラーがないことを確認したら、
またnetplan-wpa-*.serviceが起動しているので手動で止める。

systemctl stop netplan-wpa-*.service

直接applyする。

netplan apply

(注意: サービス名は、起動中なら*で補えるが、停止中はそうはいかないようなので、stopした後でstatusなどしたいときは*を使わない。)

systemd-resolvedでdnsを設定

/etc/systemd/resolved.conf を編集

先のnetplanで書いたnameserversのアドレス。
NetworkManagerとは共存できないらしい?のでnetworkmanagerはdisableであると確認しておく。

[Resolve]
DNS=1.1.1.1
FallbackDNS=1.0.0.1

バグ(?)対策

/etc/resolve.conf -> ../run/systemd/resolve/stub-resolv.conf のリンクを張りなおす

unlink /etc/resolv.conf
ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf

これでおしまい。
ゲストに接続するには、普通に、ゲストでip aして出てくるアドレスにリクエスト投げればよい。

おまけ

タイムゾーンの設定

timedatectl set-timezone Asia/Tokyo