- Linux
- 2013-10-31
ブロードバンドルーターで静的IPマスカレードを使用し、サーバーをプライベートネットワークで運用する場合の注意点をご紹介。
サーバーをプライベートIPで運用する場合、内部での名前解決をしてあげないといけません。
内部からのドメイン名前解決は/etc/hostsファイルに以下のように記述
※ドメインがexample.jp、ルーターが192.168.100.1、サーバーがホストwwwの192.168.100.2とします。
192.168.100.2 www.example.jp
これを書いておかないとサーバー自身でも自サイトを見ることができません。
更に自サイト内でフルパス参照ができません。
※リンクでページを移動するだけなら可能(クライアントの名前解決によるため)
特に複数のウェブサーバーがあり、別のウェブサーバーからデータを
PHP等のプログラムを使って読み出そうとすると、名前解決できずにエラーになります。
他の事例としては、メールサーバーとウェブサーバーが同ネットワーク内に
別に存在する場合で、ウェブサーバーからフォーム等でメールを同ネットワーク内の
メールサーバーで受けているアドレスに送る場合にも注意が必要です。
ウェブサーバーはメールの送信を試みますが、メールサーバーと互いに同じプライベートネットワークに存在するため、メールは送れません。
これはプライベートネットワークのため、互いにグローバルIPでのアクセスができないことが原因です。
例えばドメインはexample.jp、ウェブサーバーのホストをwww(192.168.100.2)、
メールサーバーのホストをmail(192.168.100.3)で、メールアドレスがinfo@example.jpだとします。
ウェブサーバーがinfo@example.jp宛てにメールを配送しようとすると、メールサーバーであるmail.example.jpというサーバーにメールを配送しようとします。
ですが、ウェブサーバーがmail.example.jpのIPアドレスを引くとグローバルのIPアドレスが返ってきます。
しかし、メールサーバーは同プライベートネットワークにあるので、実際はプライベートのIPでアクセスしなければなりません。
そのため、メールが送れないという状況になってしまいます。
それを解決するためには、メールサーバーで管理しているメールアドレスへのSMTP配送経路を指定してやる必要があります。
qmailの場合、/var/qmail/control/smtproutesファイル(なければ作成)にドメインに対するIPアドレスを記述します。
example.jp:192.168.100.3
このIPアドレスにプライベートIPアドレスを指定してやることでプライベートネットワーク内にあるメールサーバーへの配送が可能になります。