Start typing to search across invoices, services, domains, tickets, and more...
サイトクラスター(マルチIP)サーバーには /24 ブロックが1つ以上付属することが多く、1ブロックで253個以上のIPがあります。1つずつ手作業で追加するのは時間がかかりミスも起きがちです。本記事ではマルチIPサーバーでLinuxに/24のIPを一括バインドする方法として、ループでの即時バインド、NetplanやNetworkManagerでの永続化、systemdによる起動時の自動バインド、一括確認までを解説します。Ubuntu、Debian、CentOS/Rocky/AlmaLinuxに対応しています。
メインNICとデフォルトルートを確認します。以下では eth0 と表記します。
ip -br addr show
ip route show defaultforループ1つでブロック全体をバインドでき、全IPが使えるかのテストに便利です。再起動で消えます。
for i in $(seq 2 254); do
ip addr add 203.0.113.$i/24 dev eth0
doneアドレスのみ追加し、追加ブロック用に別のデフォルトゲートウェイを設定しないでください。
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.1netplan try
netplan applyNetworkManagerは接続プロファイルにアドレスを保存し、起動時に自動で復元します。
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分かかることがあります。途中で中断しないでください。
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.servicenmcliで管理しているシステムでは、接続の再有効化時にスクリプトで追加したアドレスが消えないよう、ステップ4の方法を優先してください。
バインド数を数え、いくつかの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; done1行目は253(実際の数)と表示されるはずです。curlで対応するIPが返れば送信も正常です。一度再起動して永続化も確認しましょう。
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 を無効化します。
ブロックがメインIPと同じL2ネットワークにあるか、メインIPへルーティングされているかで異なります。開通情報に従い、不明な場合はチケットでご確認ください。
利用可能範囲内のIPか、ファイアウォール設定を確認し、curl --interface で個別にテストしてください。それでも通らない場合はIPリストを添えてチケットを送信してください。
数百程度ならカーネルへの影響はほぼありません。netplan apply に少し時間がかかるのは正常です。
解決しない場合はチケットを送信して、IMIDCの24時間365日テクニカルサポートへご連絡ください。