非常に軽量な Linux ディストリビューションである Photon OS において、固定 (静的な) IP アドレスを設定する方法を紹介します。
ただし!
Photon OS に関しては、下記の記事で紹介しているような方法で、OVA デプロイと合わせて IP アドレスまで設定してしまう方が、圧倒的に楽です。
そのため、この記事は、デプロイ後に IP アドレスを変更する場合や、2つ目以降の NIC に IP アドレスを設定する場合などを想定して、手順を記載します。
前提
執筆時点で、Photon OS は ver 4.0 を利用しています。
# cat /etc/photon-release
VMware Photon OS 4.0
PHOTON_BUILD_NUMBER=2f5aad892
手順
前述の通り、1つ目の NIC に関しては、もっと簡単に設定できる方法があるので、ここでは、2つ目の NIC eth1
に IP アドレスを設定する場面を想定して、手順を記載します。
仮想 NIC の追加
まずは、対象の Photon OS の VM に、仮想 NIC を追加します。
ここでは、VM 展開時に作成した Management-Network
に接続した NIC に加えて、Workload-Network
に接続した NIC を追加しました。
実際に、VM 内で NIC の存在を確認すると、eth1
として、新たに NIC が追加されているのが分かります。
# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 00:50:56:93:36:0f brd ff:ff:ff:ff:ff:ff
altname eno1
altname enp11s0
altname ens192
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default
link/ether 02:42:77:f3:b5:2a brd ff:ff:ff:ff:ff:ff
4: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 00:50:56:93:0e:e7 brd ff:ff:ff:ff:ff:ff
altname eno2
altname enp19s0
altname ens224
(参考) 設定ファイルの場所
Photon OS 4 では、systemd-networkd
を使って、ネットワーク設定が管理されています。
そのため、NIC に IP アドレスを設定するには、network ファイルと呼ばれる設定ファイルを作成します。
まず、systemd-networkd
では、ユーザーが作成する設定ファイルは /etc/systemd/network
に格納します。
例えば、前述の記事のように、eth0
は、vSphere の仕組みを使って設定している場合、下記のようなファイルが、すでに配置されています。
# ls /etc/systemd/network
10-gosc-eth0.network 99-dhcp-en.network
先頭に数字が振られていますが、これはソートした時に、ファイル名が先に来る方が優先される設定となるため、先頭に番号を付けて分かりやすくしています。
この例では、10-gosc-eth0.network
として、eth0
に対する静的な IP アドレス設定の方が、99-dhcp-en.network
に設定されている「デフォルトでは DHCP を有効化」よりも優先されるようになっています。
network ファイルの作成
ここでは 2つ目の NIC として、eth1
に IP アドレスを設定するので、例えば、11-static-eth1.network
として作成していきます。
意味合いとしては、「vSphere の機能が作成した設定の優先度 (10) よりは低いが、DHCP 設定の優先度 (99) よりは高い優先度 (11) を設定し、静的に (static) に、eth1
に IP アドレスを設定するファイル」としています。
まず、設定ファイルの格納場所まで移動します。
cd /etc/systemd/network
このディレクトリに、設定ファイル 11-static-eth1.network
を作成します。
[Match]
Name=eth1
[Network]
DHCP=no
Address=172.19.31.201/24
上記の例では、2つ目の NIC なので、Gateway の設定や DNS に関する設定は省略しています。
もし、Gateway や DNS を設定する際には、下記のようになります。
[Match]
Name=eth1
[Network]
DHCP=no
Address=172.19.31.201/24
Gateway=172.19.31.254
DNS=172.19.30.1
Domains=mylab.test
注意
ありがちなミスですが、network ファイルの権限が 644
であることを、しっかり確認してください。
よくあるのは、systemd-networkd が Read 権限が無く、設定が反映されないことがあります。
# ls -l 11-static-eth1.network
-rw-r--r-- 1 root root 145 MMM DD hh:mm 11-static-eth1.network
もし、違う権限になっていたら、権限の変更をしておいてください。
chmod 644 11-static-eth1.network
(参考) VLAN の設定
Photon OS は、vSphere などのクラウド環境に展開することが多いので、そこまで多いケースではないと思いますが、もし Guest OS 側で VLAN を設定したい場合、設定ファイルがちょっと多くなります。
詳細は、下記の記事で解説しています。
設定の反映
設定ファイルが正しく作成されていれば、あとは下記のコマンドで設定を反映させられます。
systemctl restart systemd-networkd
ただ、エラーした場合であっても、このコマンドには特に応答がありません。
なので、しっかりと status コマンドで、正しく反映されているか確認します。
systemctl status systemd-networkd
何かミスがあった場合、コマンド出力の後半に、ログとしてエラー内容が出力されるので、その内容を確認しながら、設定ファイルを修正します。
最後に、実際に、NIC に IP アドレスが振られていることを確認して、完了です。
# ip addr
...(snip)...
4: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:50:56:93:0e:e7 brd ff:ff:ff:ff:ff:ff
altname eno2
altname enp19s0
altname ens224
inet 172.19.31.201/24 brd 172.19.31.255 scope global eth1
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:fe93:ee7/64 scope link
valid_lft forever preferred_lft forever
参考
Photon OS の公式ドキュメントについては、下記の Setting a Static IP Address
の章を参照ください。
また、Photon OS で利用している systemd-networkd
に関しては、Arch Linux のコミュニティの Wiki が非常に詳しく解説してありますので、参考になると思います。