- ベストアンサー
外部サーバにアクセスするためのNICを指定したい
- NIC二枚差しのLinuxサーバで、eth1経由で特定のインターネット上のサーバにアクセスしたい場合、適切な設定方法を教えてください。
- 質問者はeth0とeth1の繋がっているネットワークが別系統でインターネットに接続されている場合、通常はeth0を経由してインターネットに接続しているが、特定のサーバにはeth1経由でアクセスしたいと考えている。
- routeコマンドでの設定やiptablesの設定について、具体的な記述方法がわからず困っている。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>routeコマンドでルート情報を設定する際に名前解決をせず、パケットの送信要求が出るたびにルーティングテーブルの名前解決をやるように出来ないものですかね? >オーバーヘッドが大きい事は目をつぶるとして… これはちょっと聞いたことが無いです。 とりあえずの対策としては、DNSでクエリされた3つのIPアドレスを全てルートとして追加することになると思いますが、(当たり前ですね) これだと宛先のDNSの情報が変化すると問題がでますね。 ただ、DNSの情報は一般的にはたびたび変わるものではないので、定期的なメンテンスと問題発生時の対応でもいけそうな気がします。(サーバの重要度がわからないのでなんとも言えませんが) DNSクエリの結果から自動的にルートを生成するにはぱっとの思いつきですが、 DNSクエリの結果からルーティングテーブルへの登録を行うようなスクリプトを作成してcronで定期的に走らせるような対応があるかもしれません。 スクリプト自体はどの言語でもそんなに難しくはなくできるように思います。
その他の回答 (3)
- maesen
- ベストアンサー率81% (646/790)
># route add -host サーバのホスト名 gw ルーターのIPアドレス metric 1 eth1 >とかやってみたものの、うまくいきません。 正確に書くと # route add -host サーバのIPアドレス gw eth1側のルーターのIPアドレス metric 1 eth1 ということになると思いますが、基本的にはこの設定で問題は無いはずです。 うまくいかないというのはどういう状態になるのですか? (eth0を経由する? 通信自体が出来ない?) >但し、インターネット上のホストは想定されていないのかもしれません IP及びIPルーティングの話なのでインターネット上だとか、イントラネット上だとかいう区別はありませんので想定されていないとかはありません。 targetは基本的にはIPアドレスですが、DNSホスト名を指定した場合にはDNSによる名前解決後のIPアドレスでルーティングテーブルが登録されることになります。 そのためDNSホスト名に複数のIPアドレスが登録されていてラウンドロビンされるような場合には問題が出る場合もあります。 根本的なことですが、eth1側のルータ経由でインターネットアクセスは問題無く出来るのでしょうか? (デフォルトゲートウェイをeth1側のルータに向けた場合など) これが問題無ければ、どこかに単純な設定ミスがありそうに思いますので、このあたりをチェックしてはいかがでしょうか? ・tracerouteの結果はどうなるのか? ・ルーティングテーブルは問題無いか # dig サーバのホスト名 でクエリされるIPアドレスが # route -n の結果と整合されているか? >iptablesかなとも思ってますが、 >何をどう記述したらいいのかわからず困ってます。 iptablesだけの設定でアクセス出来るようになることは考えにくいです。 意図的か意図をせずiptablesによってパケットが破棄される可能性もありますので、 # service iptables stop などでiptablesを全てACCEPTにして確認することは重要です。
お礼
詳しい解説ありがとうございます。とても参考になりました。 digで件のホストを確認したところ3つのIPアドレスが登録されており、まさに、 > そのためDNSホスト名に複数のIPアドレスが登録されていてラウンドロビンされるような場合には問題が出る場合もあります。 この状況に陥っておりました。 tracerouteの結果もeth0を通ったりeth1を通ったりまちまちで設定がうまくいっていないと思い込んでいましたが、ある意味正しく動作はしていたようです。。 routeコマンドでルート情報を設定する際に名前解決をせず、パケットの送信要求が出るたびにルーティングテーブルの名前解決をやるように出来ないものですかね? オーバーヘッドが大きい事は目をつぶるとして…
- tsanet
- ベストアンサー率66% (2/3)
サーバのホスト名にネットマスクを付加して追加してもeth1は通りませんか.
補足
そのサーバがインターネット上にあるのです… つまり、サーバのIPアドレスはDNSの名前解決が必要なのですが、 そういった状況でrouteコマンドを使うのは不適切なのでしょうか?
- LOHA
- ベストアンサー率52% (203/388)
route使えば出来そうかもです。 http://project-honey.asablo.jp/blog/2009/02/06/4104948 (↑は環境がWindowsなので適宜↓を参照) http://www.atmarkit.co.jp/fnetwork/netcom/route/route.html 少なくとも ># route add -host サーバのホスト名 gw ルーターのIPアドレス metric 1 eth1 の-hostはホスト名を指定するオプションではないようです。 #回答にさっぱり自信がないので参考までにしてください。
お礼
ご回答ありがとうございます。 routeコマンドのmanページを参照すると、 -hostはtargetをホストとするオプションと書かれてはいるんですよね… 但し、インターネット上のホストは想定されていないのかもしれません。
お礼
DNS情報の変化に対応できない点が若干気がかりですが、 複数登録でとりあえずなんとかなりました。 度々ご回答いただきまして、ありがとうございました!