Linuxサーバーに追加のIPアドレスを追加する方法
ほとんどのLinuxサーバー、特に仮想プライベートサーバーには、接続するためのパブリックIPアドレスが付与されています。しかし、接続を行うために使用される物理ネットワークカードは、任意の数のIPアドレスをサポートできます。サーバーに新しいIPアドレスを追加する方法は次のとおりです。
別のIPアドレスを使用する理由は何ですか?
複数のアドレスを持つことには、いくつかの理由から素晴らしい利点があります。主な利点は、異なるアドレスで同じポートで複数のアプリケーションを実行できることです。例えば、NGINXとApacheを同時に実行することはできません。なぜなら、両方のウェブサーバーがポート80を使用する必要があるからです。しかし、NGINXをあるIPアドレスにバインドし、Apacheを別のIPアドレスにバインドすれば、競合なしに実行することができます。
ウェブコンテンツの提供に関しては、この問題をリバースプロキシを使用して解決することもできます。リバースプロキシは、コンテンツの前に位置し、一つのポートでリッスンし、コンテンツを他の場所、しばしば複数の異なる場所に送るウェブサーバの一種です。
ただし、複数の実際のIPアドレスを持つことは、リバースプロキシの設定を維持する必要がなく、はるかに簡単です。単に正しいアドレスでサービスを開始すれば、そのアドレスで直接リッスンします。
複数のアドレスはDockerとも非常に相性が良く、Dockerはアプリケーションをポータブルなコンテナにパッケージ化し、どこでも実行できるツールです。コンテナをバインドするための複数の外部IPを持つことで、1台のマシンで多くの異なるアプリケーションを簡単に実行することができます。
どうやってもっとIPアドレスを取得できますか?
世界には有限の数の公開IPが残っており、ほとんどはすでにインターネット企業に割り当てられています。もっと必要な場合は、ホスティングプロバイダーから購入またはレンタルする必要があります。ほとんどの主流のクラウドプロバイダーは、追加のIP用のオプションを提供していますが、設定は使用するものによって異なります。
例えば、AWSを使用している場合、EC2インスタンス用のElastic IPアドレスを既に持っているでしょう。しかし、追加のElastic IPを追加することもできますが、それぞれ月額3.65ドルの費用がかかります。
他のクラウドプロバイダーは、アドレスの全ブロックを購入できるかもしれません。最大24のサイズのCIDRブロックを一度の料金で提供する、最大手の専用サーバー提供者の一つであるOVHがそうです。
大規模なIPv4アドレス空間を直接所有し、管理したい大企業は、IANAからブローカーを通じてブロック全体を直接購入することもできます。しかし、これは大きなプレミアムがかかります---しばしば1アドレスあたり50ドル以上、そして大きなブロックは数万ドル、さらには数十万ドルかかることもあります。
複数のIPアドレスはどのように機能しますか?
Linuxのネットワーキングは少し奇妙です。サーバーに物理的に接続されている各ネットワークカードは以下に表示されます。
ip addr show ネットワークインターフェースとして eth0 や eno1 のようなものがあります。また、さまざまなタイプの仮想インターフェースもありますが、サーバーから出るすべての実際の接続は物理ネットワークインターフェースを通ります。
IPアドレスは異なります---それらは、あなたのサーバーのネットワークインターフェースに関連付けられた有形のものではなく、サーバーをルーティングのために識別するために使用される単なる抽象概念です。あなたのホスティングプロバイダーはリクエストを受け取り、もしそれがあなたが所有するIPアドレス宛てであれば、ホストのルーティング設定を使用してあなたのサーバーにルーティングされます。
重要な部分は、あなたのサーバーのネットワークインターフェースがそのリクエストを受け取るようにソフトウェアで設定されていなければならないということです。もしあなたのサーバーにそのアドレスがネットワークインターフェースの設定に追加されていなければ、応答しません。技術的には、所有していないアドレスでも、サーバーを任意のアドレスでリッスンするように設定することはできますが、特に何も機能しません。
IPアドレスはブロック単位で割り当てられ、CIDR表記で表されます。最小は/32で、これは単一のアドレスを表します。数が小さくなるにつれて、アドレスの数が増加します。
192.168.0.0/24 -> 192.168.0.0 to 192.168.0.255複数のIPアドレスを使用するためのLinuxの設定
Linuxのネットワーク構成は難しいことがあり、簡単にするためのツールがいくつか存在します。その中でも最良のものの一つがnetplanで、これはUbuntuを支えるチームによって作成されました。これは簡単なYAMLテンプレートを使用してネットワークインターフェースを構成します。ほとんどのシステムにはデフォルトでインストールされているはずです。
/etc/netplan/config.yamlに新しいテンプレートを作成します。
sudo nano /etc/netplan/config.yaml次に、設定を追加してください。この例はインターフェースeno1に関するもので、eth0やそれに類似したものに変更する必要があるかもしれません。
network:
version: 2
ethernets:
eno1:
addresses:
- 123.1.2.3/32
ここで複数のアドレスブロックを指定することもできますし、単一のIPアドレスを単独の/32ブロックとして指定することもできます。
設定が完了したら、netplan tryを実行してテストします。設定に問題がある場合は、元に戻されます。
sudo netplan tryうまくいけば、設定を適用してください。
sudo netplan applyインターフェースに送信されたリクエストを表示するために、tcpdumpを実行してルーティングをデバッグできます:




