前回、LinuxサーバのNIC(ネットワークインターフェースカード)のport 1つに対して複数のIPアドレスを割り当てる技術の1つ、VLANを試しました。今回は、もうひとつの技術、IPエイリアス(alias)を使って、複数のIPアドレスを割り当てる方法を解説します。
IPエイリアスって何? VLANとの違いは?
LinuxサーバのNIC(ネットワークインターフェースカード)のport 1つに対して、IPエイリアスを使っても、VLANを使っても複数のIPアドレスを割り当てることができます。しかし、両者に関して以下の違いがあります。
| ネットワークインターフェース | ネットワークセグメント | |
| VLAN(タグVLAN) | 元のネットワークインターフェースを親とした新しいネットワークインターフェース(子)を作成する | 元のネットワークインターフェースとは異なるセグメントに接続する |
| IPエイリアス | 元のネットワークインターフェースを使う | 元のネットワークインターフェースと同じセグメントに接続する |
両者の使い分けですが、新しいIPアドレスを元のIPアドレスと同じセグメントにするなら、IPエイリアスを使います。新しいIPアドレスを元のIPアドレスと異なるセグメントにするなら、VLANを使います。
今回はLinuxサーバでエイリアスIPアドレスを追加する方法を解説するよ
IPエイリアスでは、既存のネットワークインターフェースに対して、元のIPアドレスとは異なるIPアドレス(エイリアスIPアドレス)を追加します。
普通のネットワーク接続(IPエイリアスなし)
以下は、2台のLinuxサーバがごく普通にネットワークで接続しているという図です。192.168.2.0/24のサブネットに接続しており、それぞれ、192.168.2.200と192.168.2.210というIPアドレスを割り当てています。ネットワークインターフェース、コネクションは enp3s0 という名前で作成されているとします。

IPエイリアスでもうひとつIPアドレスを割り当てる
さて、ネットワークインターフェースに対してエイリアスIPアドレスを追加するのは、コネクションの設定変更という形式で行います。以下の図は、「enp3s0」のコネクションに対して、エイリアスIPアドレス 192.168.2.201と192.168.2.211を追加した状態です。

コネクションは、address1のIPアドレスの他に、address2のIPアドレスを持っています。
Rocky9におけるエイリアスIPアドレスの追加方法
実際に、Rocky Linux 9のサーバで、エイリアス用のコネクションを作成して、エイリアスIPアドレスを付けてみましょう。
方法はとても簡単です。
初期状態
ウチの環境ではミニPC 2台(ホスト名は base0とbase1)を使って、いろいろなテストをしていまして、以下のような感じで接続しています。ホストbase0のほうは、2つのネットワークインターフェースを使ってbondingし、更にそれを仮想ブリッジに接続しています。
(興味のある方はコチラをご覧ください)

ホストbase1 でエイリアスIPアドレスを追加する
① 元のネットワークインターフェースのコネクションを確認
nmcliコマンドを以下の通り実行して、エイリアスIPアドレスを追加するネットワークインターフェースのコネクションを確認しましょう。
# nmcli connection show
NAME UUID TYPE DEVICE
enp3s0 45847cc1-c0a1-30e6-b76d-f952f692a734 ethernet enp3s0
lo 85052c1f-a3ed-4ac3-9ad2-c59bbc63bda4 loopback lo
ホストbase1では、対象のコネクションはenp3s0という名前です。
/etc/NetworkManager/system-connections/enp3s0.nmconnection の内容を確認すると、IPアドレスは以下のように1つだけ定義されています(ちなみに、/の右はデフォルトゲートウェイのIPアドレス)。
~
[ipv4]
address1=192.168.2.210/24,192.168.2.200
dns=192.168.1.1;
method=manual
~
② エイリアスIPアドレスを追加
nmcliコマンドを以下の通り実行して、コネクションenp3s0にエイリアスIPアドレスを追加します。
# nmcli connection modify enp3s0 +ipv4.address 192.168.2.211/24
この状態では、まだインターフェースenp3s0にエイリアスIPアドレスは追加されていません。以下のコマンドを実行してインターフェース enp3s0を有効化すると、エイリアスIPアドレスが有効になります。
# nmcli connection up enp3s0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)
③ 追加したエイリアスIPアドレスを確認
インターフェース enp3s0を確認すると、2つのIPアドレスを持っていることが分かります。
# ip address show enp3s0
2: enp3s0: mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:e0:4c:38:6c:39 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.210/24 brd 192.168.2.255 scope global noprefixroute enp3s0
valid_lft forever preferred_lft forever
inet 192.168.2.211/24 brd 192.168.2.255 scope global secondary noprefixroute enp3s0
valid_lft forever preferred_lft forever
/etc/NetworkManager/system-connections/enp3s0.nmconnection の内容を確認すると、「address2=」の行が追加されて、エイリアスIPアドレスが定義されています。
~
[ipv4]
address1=192.168.2.210/24,192.168.2.200
address2=192.168.2.211/24
dns=192.168.1.1;
method=manual
~
ホストbase0で エイリアスIPアドレスを追加する
① 元のネットワークインターフェースのコネクションを確認
nmcliコマンドを以下の通り実行して、エイリアスIPアドレスを追加するネットワークインターフェースのコネクションを確認しましょう。
# nmcli connection show
NAME UUID TYPE DEVICE
br1 0e4631f5-bb75-42f7-8c10-90e8e8e5e14c bridge br1
br2 13a08407-47b9-498a-b8ca-3dd5a23252ac bridge br2
bond-slave-enp2s0 9ea8cad6-4153-4fcc-8374-ae6527b4b055 ethernet enp2s0
bond-slave-enp3s0 7398408b-f23c-4a8e-9773-2a12717df23e ethernet enp3s0
br-slave-bond2 679cc659-13a2-4e19-8277-50f5b593f403 bond bond2
br-slave-enp0s21f0u2c2 5b789464-996b-410e-8166-b8afd4eb7f66 ethernet enp0s21f0u2c2
lo 3d928de4-e33d-4023-a518-b5883f853721 loopback lo
ホストbase0では、仮想ブリッジbr2にIPアドレスを設定するので、対象のコネクションはbr2という名前です。
② エイリアスIPアドレスを追加
nmcliコマンドを以下の通り実行して、コネクションbr2にエイリアスIPアドレスを追加します。
# nmcli connection modify br2 +ipv4.address 192.168.2.201/24
この状態では、まだインターフェースbr2にエイリアスIPアドレスは追加されていません。以下のコマンドを実行してインターフェース br2を有効化すると、エイリアスIPアドレスが有効になります。
# nmcli connection up br2
Connection successfully activated (controller waiting for ports) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/12)
③ 追加したエイリアスIPアドレスを確認
インターフェース br2を確認すると、2つのIPアドレスを持っていることが分かります。
# ip address show br2
7: br2: mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 84:47:09:18:c5:4f brd ff:ff:ff:ff:ff:ff
inet 192.168.2.200/24 brd 192.168.2.255 scope global noprefixroute br2
valid_lft forever preferred_lft forever
inet 192.168.2.201/24 brd 192.168.2.255 scope global secondary noprefixroute br2
valid_lft forever preferred_lft forever
inet6 fe80::8647:9ff:fe18:c54f/64 scope link
valid_lft forever preferred_lft forever
/etc/NetworkManager/system-connections/br2.nmconnection の内容を確認すると、「address2=」の行が追加されて、エイリアスIPアドレスが定義されています。
~
[ipv4]
address1=192.168.2.200/24
address2=192.168.2.201/24
method=manual
~
エイリアスIPアドレスを削除するにはどうする?
エイリアスIPアドレスを追加するときは「+ipv4.address」のオプションを指定して変更をかけましたが、エイリアスIPアドレスを削除するときは「-ipv4.address」のオプションを指定して変更をかければOKです。以下は、ホストbase1でエイリアスIPアドレスを削除する例です。
# nmcli connection modify enp3s0 -ipv4.address 192.168.2.211/24
# nmcli connection up enp3s0
エイリアスIPアドレス追加後の接続イメージ
ホストbase0のbr2とホストbase1のenp3s0に対して、エイリアスIPアドレスを追加した後の状態は、こんな感じになっています。

疎通を確認する
ホストbase0からホストbase1のエイリアスIPアドレスに疎通を確認します。
[root@base0 base0]# ping 192.168.2.211
PING 192.168.2.211 (192.168.2.211) 56(84) bytes of data.
64 bytes from 192.168.2.211: icmp_seq=1 ttl=64 time=0.668 ms
64 bytes from 192.168.2.211: icmp_seq=2 ttl=64 time=0.897 ms
~
疎通OKですね。
今度は逆に、ホストbase1からホストbase0のエイリアスIPアドレスに疎通を確認します。
[root@base1 base1]# ping 192.168.2.201
PING 192.168.2.201 (192.168.2.201) 56(84) bytes of data.
64 bytes from 192.168.2.201: icmp_seq=1 ttl=64 time=0.790 ms
64 bytes from 192.168.2.201: icmp_seq=2 ttl=64 time=0.752 ms
~
こちらも疎通OKですね。めでたしめでたし。。
IPエイリアスはどのような目的で使うのか..
同じネットワークセグメントに接続しているのだから、IPアドレスは1つでいいんじゃね? とは思いますが、例えば、事情があってサービス(http, dns, ntp)毎にIPアドレスを変えて運用したいといった目的のために、IPエイリアスを使うことがあるようです。
広告主へのリンク
オイラが今回のテストに使っているのは、高価なサーバではなくて、安価なミニPC MINISFORUM GK41 というマシンです。LANポートが2つ付いているので、PXEブートのテストにも便利です。
更に、このMINISFORUM GK41のUSBポートに以下のUSB-LAN変換アダプタを付けて、LANポートを合計3つにして運用しています。
このブログにおける関連リンク
犬でも分かるLinuxネットワーク
・犬でも分かるLinuxネットワーク設定(1): nmcliコマンドの使い方
・犬でも分かるLinuxネットワーク設定(2): ボンディング(bonding)
・犬でも分かるLinuxネットワーク設定(3): 仮想ブリッジ
・犬でも分かるLinuxネットワーク設定(4): ボンディング+仮想ブリッジ
・犬でも分かるLinuxネットワーク設定(5):定義ファイルの修正
・犬でも分かるLinuxネットワーク設定(6): ルーティングとNAT
・犬でも分かるLinuxネットワーク設定(7):firewalldによるアクセス制限
・犬でも分かるLinuxネットワーク設定(8):VLAN
・犬でも分かるLinuxネットワーク設定(9):IPエイリアス
・犬でも分かるLinuxネットワーク設定(10):outboundのアクセス制限
・犬でも分かるLinuxネットワーク設定(11):NATポリシーにアクセス制限を設定する


コメント