犬でも分かるLinuxネットワーク設定(9):IPエイリアス

前回、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=manua
l

エイリアス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ポリシーにアクセス制限を設定する

コメント

タイトルとURLをコピーしました