ESC

Start typing to search across invoices, services, domains, tickets, and more...

Search... Ctrl+K
サイト群・マルチIP

マルチIPサーバー(サイトクラスター)でLinuxに/24のIPを一括バインドする方法

7 ステップ 7 分で読めます 4 回閲覧 0
目次

サイトクラスター(マルチIP)サーバーには /24 ブロックが1つ以上付属することが多く、1ブロックで253個以上のIPがあります。1つずつ手作業で追加するのは時間がかかりミスも起きがちです。本記事ではマルチIPサーバーでLinuxに/24のIPを一括バインドする方法として、ループでの即時バインド、NetplanやNetworkManagerでの永続化、systemdによる起動時の自動バインド、一括確認までを解説します。Ubuntu、Debian、CentOS/Rocky/AlmaLinuxに対応しています。

まずクライアントエリアまたは開通メールでIPブロック・利用可能範囲・プレフィックス・ゲートウェイを確認してください(ログイン → 製品とサービス → サーバーを選択 → 管理)。不明な場合はチケットでお問い合わせください。ネットワーク・ゲートウェイ・ブロードキャストアドレスが使えないなど範囲は回線により異なります。以下では 203.0.113.2〜254/24 を例にします。

ステップ1:インターフェース名とメインIPを確認

メインNICとデフォルトルートを確認します。以下では eth0 と表記します。

ip -br addr show
ip route show default

ステップ2:ループで/24のIPを一括バインド(一時的)

forループ1つでブロック全体をバインドでき、全IPが使えるかのテストに便利です。再起動で消えます。

for i in $(seq 2 254); do
  ip addr add 203.0.113.$i/24 dev eth0
done

アドレスのみ追加し、追加ブロック用に別のデフォルトゲートウェイを設定しないでください。

ステップ3:UbuntuでNetplanのaddressesリストに永続化

253行を手入力するのはミスの元です。コマンドでYAMLの行を生成し、/etc/netplan/ の設定ファイルのaddresses配下に貼り付けます。

for i in $(seq 2 254); do echo "        - 203.0.113.$i/24"; done

貼り付け後は次のような構成になります。

network:
  version: 2
  ethernets:
    eth0:
      addresses:
        - 198.51.100.5/24
        - 203.0.113.2/24
        - 203.0.113.3/24
        # ... 203.0.113.254/24
      routes:
        - to: default
          via: 198.51.100.1
netplan try
netplan apply
YAMLのインデントはスペースで揃える必要があります。適用前に元ファイルをバックアップし、VNCコンソールが使えることを確認してください。

ステップ4:CentOS/Rocky/AlmaLinuxでnmcliを使い一括永続化

NetworkManagerは接続プロファイルにアドレスを保存し、起動時に自動で復元します。

for i in $(seq 2 254); do
  nmcli connection modify eth0 +ipv4.addresses 203.0.113.$i/24
done
nmcli connection up eth0

処理に1〜2分かかることがあります。途中で中断しないでください。

ステップ5:Debian・汎用:systemdで起動時に自動バインド

Debian(ifupdown)や、ネットワーク設定ファイルを変更したくない場合は、起動時にsystemdからスクリプトを実行します。/usr/local/bin/bind-ips.sh を作成します。

#!/bin/bash
# /usr/local/bin/bind-ips.sh
DEV=eth0
NET=203.0.113
for i in $(seq 2 254); do
  ip addr add ${NET}.${i}/24 dev ${DEV} 2>/dev/null
done
exit 0

続いて /etc/systemd/system/bind-ips.service を作成します。

[Unit]
Description=Bind extra IPv4 block
After=network-online.target
Wants=network-online.target

[Service]
Type=oneshot
ExecStart=/usr/local/bin/bind-ips.sh
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

実行権限を付与して有効化します。

chmod +x /usr/local/bin/bind-ips.sh
systemctl daemon-reload
systemctl enable --now bind-ips.service

nmcliで管理しているシステムでは、接続の再有効化時にスクリプトで追加したアドレスが消えないよう、ステップ4の方法を優先してください。

ステップ6:/24のIPがバインドされたか一括確認

バインド数を数え、いくつかのIPで送信元を確認します。

ip -4 addr show dev eth0 | grep -c "inet 203.0.113."
for i in 2 100 254; do curl -s --interface 203.0.113.$i https://ifconfig.me; echo; done

1行目は253(実際の数)と表示されるはずです。curlで対応するIPが返れば送信も正常です。一度再起動して永続化も確認しましょう。

ステップ7:ブロック全体を一括削除

for i in $(seq 2 254); do
  ip addr del 203.0.113.$i/24 dev eth0
done

永続化設定も削除してください。Netplanの行を消す、nmcli -ipv4.addresses で削除する、または bind-ips.service を無効化します。

よくある質問

プレフィックスは/24と/32のどちらにすべきですか?

ブロックがメインIPと同じL2ネットワークにあるか、メインIPへルーティングされているかで異なります。開通情報に従い、不明な場合はチケットでご確認ください。

一部のIPにpingが通りません。

利用可能範囲内のIPか、ファイアウォール設定を確認し、curl --interface で個別にテストしてください。それでも通らない場合はIPリストを添えてチケットを送信してください。

大量のIPをバインドすると性能に影響しますか?

数百程度ならカーネルへの影響はほぼありません。netplan apply に少し時間がかかるのは正常です。

解決しない場合はチケットを送信して、IMIDCの24時間365日テクニカルサポートへご連絡ください。

この回答はお役に立ちましたか?

関連チュートリアル