外部サーバにアクセスするためのNICを指定したい

このQ&Aのポイント
  • NIC二枚差しのLinuxサーバで、eth1経由で特定のインターネット上のサーバにアクセスしたい場合、適切な設定方法を教えてください。
  • 質問者はeth0とeth1の繋がっているネットワークが別系統でインターネットに接続されている場合、通常はeth0を経由してインターネットに接続しているが、特定のサーバにはeth1経由でアクセスしたいと考えている。
  • routeコマンドでの設定やiptablesの設定について、具体的な記述方法がわからず困っている。
回答を見る
  • ベストアンサー

外部サーバにアクセスするためのNICを指定したい

NIC二枚差し(eth0とeth1)のLinuxサーバがあって、 eth0とeth1の繋がっているネットワークが、 それぞれ別系統でインターネットに接続されているとします。 普段はeth0を経由してインターネットに接続するので、 routeコマンドでdefault gatewayをeth0側のルーターに指定してます。 ここからが質問です。 あるインターネット上のサーバだけ例外的にeth1経由でアクセスしたい場合は、 どこに何を記述するのが適切ですか? routeコマンドで、 # route add -host サーバのホスト名 gw ルーターのIPアドレス metric 1 eth1 とかやってみたものの、うまくいきません。 iptablesかなとも思ってますが、 何をどう記述したらいいのかわからず困ってます。

質問者が選んだベストアンサー

  • ベストアンサー
  • maesen
  • ベストアンサー率81% (646/790)
回答No.4

>routeコマンドでルート情報を設定する際に名前解決をせず、パケットの送信要求が出るたびにルーティングテーブルの名前解決をやるように出来ないものですかね? >オーバーヘッドが大きい事は目をつぶるとして… これはちょっと聞いたことが無いです。 とりあえずの対策としては、DNSでクエリされた3つのIPアドレスを全てルートとして追加することになると思いますが、(当たり前ですね) これだと宛先のDNSの情報が変化すると問題がでますね。 ただ、DNSの情報は一般的にはたびたび変わるものではないので、定期的なメンテンスと問題発生時の対応でもいけそうな気がします。(サーバの重要度がわからないのでなんとも言えませんが) DNSクエリの結果から自動的にルートを生成するにはぱっとの思いつきですが、 DNSクエリの結果からルーティングテーブルへの登録を行うようなスクリプトを作成してcronで定期的に走らせるような対応があるかもしれません。 スクリプト自体はどの言語でもそんなに難しくはなくできるように思います。

hob0310
質問者

お礼

DNS情報の変化に対応できない点が若干気がかりですが、 複数登録でとりあえずなんとかなりました。 度々ご回答いただきまして、ありがとうございました!

その他の回答 (3)

  • maesen
  • ベストアンサー率81% (646/790)
回答No.3

># 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にして確認することは重要です。

hob0310
質問者

お礼

詳しい解説ありがとうございます。とても参考になりました。 digで件のホストを確認したところ3つのIPアドレスが登録されており、まさに、 > そのためDNSホスト名に複数のIPアドレスが登録されていてラウンドロビンされるような場合には問題が出る場合もあります。 この状況に陥っておりました。 tracerouteの結果もeth0を通ったりeth1を通ったりまちまちで設定がうまくいっていないと思い込んでいましたが、ある意味正しく動作はしていたようです。。 routeコマンドでルート情報を設定する際に名前解決をせず、パケットの送信要求が出るたびにルーティングテーブルの名前解決をやるように出来ないものですかね? オーバーヘッドが大きい事は目をつぶるとして…

  • tsanet
  • ベストアンサー率66% (2/3)
回答No.2

サーバのホスト名にネットマスクを付加して追加してもeth1は通りませんか.

hob0310
質問者

補足

そのサーバがインターネット上にあるのです… つまり、サーバのIPアドレスはDNSの名前解決が必要なのですが、 そういった状況でrouteコマンドを使うのは不適切なのでしょうか?

  • LOHA
  • ベストアンサー率52% (203/388)
回答No.1

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はホスト名を指定するオプションではないようです。 #回答にさっぱり自信がないので参考までにしてください。

hob0310
質問者

お礼

ご回答ありがとうございます。 routeコマンドのmanページを参照すると、 -hostはtargetをホストとするオプションと書かれてはいるんですよね… 但し、インターネット上のホストは想定されていないのかもしれません。

関連するQ&A

  • RedHatで構築したファイアウォールサーバのDMZにアクセスできない

    RedHatで構築したファイアウォールサーバのDMZにアクセスできない原因が解らない。 『図解でわかる Linuxサーバ構築・設定のすべて 一戸英男(日本実業出版社)』を参考に、 RedHat Enterprise Linux 5 で ファイアウォールサーバ(以下、FW-Server)の構築を勉強しています。 構築した環境は以下になります。 ======================== TestPC : RedHat ----------------------- IP : 111.222.333.65/28 ========================   | ========================== FW-Server : RedHat              ===================== --------------------------         Web-Server : RedHat eth0 : 111.222.333.70/28           ---------------------  eth2 : 111.222.333.73/29 --- DMZ --- 111.222.333.75/29 eth1 : 192.168.1.1                ===================== ==========================   |   |   LAN eth0 : WAN eth2 : DMZ eth1 : LAN と、想定して構築しています。 route、iptables の設定は、本の通り設定を行ったつもりなのですが、 TestPCからWeb-Serverに接続する(Webページを表示する)ことができません。 ・Ping について TestPC からは、Pingは eth0、eth2 まで飛び、Web-Serverまで飛ぶことができません。 LAN からは、PingはWeb-Serverに飛び、Webページを表示することができます。 FW-Serverからは、PingはWeb-Serverに飛び、Webページを表示することができます。 ・tcpdump コマンドについて FW-ServerとWeb-Serverでtcpdumpコマンドを実行し、TestPCから接続を試みたところ、 FW-Serverでは反応がありますが、Web-Serverでは反応がありません。 ・route の設定について routeの設定は以下になります。 route add -net 111.222.333.72/29 gw 111.222.333.73 eth2 route add -net 111.222.333.64/28 gw 111.222.333.70 eth0 route add -net 192.168.1.0/24 gw 192.168.1.1 eth1 route add -net 0.0.0.0 gw 111.222.333.65 eth0 ・iptables の設定について iptablesの、基本ポリシーと各NICのFORWARDの設定は以下になります。 iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP iptables -A FORWARD -i eth2 -o eth0 -j ACCEPT iptables -A FORWARD -i eth0 -o eth2 -j ACCEPT iptables -A FORWARD -i eth1 -o eth2 -j ACCEPT iptables -A FORWARD -i eth2 -o eth1 -j ACCEPT iptables や route の設定を変えて接続テストを行っていますが、接続することができません。 RedHat については、インストールから行っています。 ネットワーク初心者ですので、行った設定について不備な点・怪しい点について見当がつきません。 確認事項だけでもアドバイスを頂けると助かります。よろしくお願いします。

  • NICをデフォルトゲートウェイに指定するとインターネットにアクセスできない?

    192.168.247.0のネットワークに対し、windows側では、192.168.247.1のインターフェースを持っています。 現在LINUX側では、192.168.247.2がdefault gatewayになっています。 この状態から、LINUX側のdefault gatewayを192.168.247.1に変更するとLINUXからインターネットにアクセスできなくなります。 これの理由がわかりません。どなたかご存知ないでしょうか? windowsでのルーティングテーブル C:\Documents and Settings\kyounoii>route print =========================================================================== Active Routes: Network Destination Netmask Gateway Interface Metric 0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.2 25 127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1 192.168.0.0 255.255.255.0 192.168.0.1 192.168.0.1 30 192.168.0.1 255.255.255.255 127.0.0.1 127.0.0.1 30 192.168.0.255 255.255.255.255 192.168.0.1 192.168.0.1 30 192.168.1.0 255.255.255.0 192.168.1.2 192.168.1.2 25 192.168.1.2 255.255.255.255 127.0.0.1 127.0.0.1 25 192.168.1.255 255.255.255.255 192.168.1.2 192.168.1.2 25 192.168.17.0 255.255.255.0 192.168.17.1 192.168.17.1 20 192.168.17.1 255.255.255.255 127.0.0.1 127.0.0.1 20 192.168.17.255 255.255.255.255 192.168.17.1 192.168.17.1 20 192.168.247.0 255.255.255.0 192.168.247.1 192.168.247.1 20 192.168.247.1 255.255.255.255 127.0.0.1 127.0.0.1 20 192.168.247.255 255.255.255.255 192.168.247.1 192.168.247.1 20 224.0.0.0 240.0.0.0 192.168.0.1 192.168.0.1 30 224.0.0.0 240.0.0.0 192.168.1.2 192.168.1.2 25 224.0.0.0 240.0.0.0 192.168.17.1 192.168.17.1 20 224.0.0.0 240.0.0.0 192.168.247.1 192.168.247.1 20 255.255.255.255 255.255.255.255 192.168.0.1 192.168.0.1 1 255.255.255.255 255.255.255.255 192.168.1.2 192.168.1.2 1 255.255.255.255 255.255.255.255 192.168.17.1 192.168.17.1 1 255.255.255.255 255.255.255.255 192.168.247.1 192.168.247.1 1 255.255.255.255 255.255.255.255 192.168.247.1 4 1 Default Gateway: 192.168.1.1 =========================================================================== linux(vmware)でのルーティングテーブル [root@localhost help]# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.247.0 * 255.255.255.0 U 0 0 0 eth0 default 192.168.247.2 0.0.0.0 UG 0 0 0 eth0

  • 2 枚の NIC の優先度について

    Windows2000 のマシンに 2 枚の NIC を差しています。 NIC1 は IP Address 192.168.0.2, Default Gateway 192.168.0.1 NIC2 は IP Address 192.168.1.2, Default Gateway 192.168.1.1 となっています。どちらの NIC も Gateway 経由で 別の ISP でインターネット に接続されています。このマシンのインターネットに対するアクセスは NIC2 を経由してほしく、LAN の中にある192.168.0.3 のファイルサーバ には NIC1 を経由して欲しいのです。 この場合どういう設定を行えばいいのでしょうか? tracert コマンドでインターネットへの経路を調べてみると 192.168.0.1 を経由するときも 192.168.1.1 を経由するときもあります。自分なりに考え NIC2 を優先されればいいと思い、 NIC1 のインターフェイスメトリックを 100 にしてみました。(NIC2 は 1 です。) これでインターネットへのアクセス は NIC2 が使われ、ファイルサーバへのアクセスは NIC1 が使われると思った のですが駄目でした。tracert google.com 等をするとやはり 192.168.0.1 と 192.168.1.1 の両方が使われていまいます。 どなたかアドバイスよろしくお願いします。 質問に不足があれば追記させて頂きます。

  • NICを2枚挿したときのデフォルトNIC

    サーバに限ったことじゃないかもしれませんが・・・ サーバ(CentOS)にNICを2枚挿し、どちらも同じセグメントに繋いだ時、サーバからインターネットや、ルータやPC1に送信する場合はどちらのNICが優先的に使われるのでしょうか? NICを複数挿しした場合は必ずどのNICか1つをデフォルトNICとするような設定をしないとこのままでは通信できませんか? 調べていたらDEFROUTE=yesというのがあり、複数NICの場合は必ずそれをデフォルトNICに指定しないとダメなのかな?と思いまして。基本的なことですみません。 └ルーター(192.168.1.1)  ├PC1(192.168.1.2)  ├サーバ(eth0:192.168.1.100/eth1:192.168.1.200)   /etc/sysconfig/network-scripts/ifcfg-eth0 IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=8.8.8.8 DNS2=8.8.4.4 /etc/sysconfig/network-scripts/ifcfg-eth1 IPADDR=192.168.1.200 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=8.8.8.8 DNS2=8.8.4.4

  • 同一NICに2つのIPアドレスを設定した時のIPアドレスの使い分けについて

    Windows2000サーバにNICが1つあります。 サーバは192.168.0.0/24ネットワーク上にあります。 このサーバのNICに2つのIPアドレス 192.168.0.1/24と192.168.0.2/24を割り当てました。 通常は192.168.0.1/24を利用してアクセスしたいのですが、 同一セグメント上の特定のマシン(192.168.0.3)には 192.168.0.2のIPアドレスを使用してアクセスがしたいです。 その場合はどのような設定をすればいいでしょうか? 当方が行なった設定は以下のとおりです。 netstat -nr(route print)でゲートウェイを確認したところ、 同一セグメントに対する設定は以下のとおりになっていました。 Network Destination Netmask Gateway Interface Metric 192.168.0.0 255.255.255.0 192.168.0.1 192.168.0.1 1 そこでroute addコマンドで以下のコマンドを実行しました。 route add 192.168.0.3 mask 255.255.255.255 192.168.0.2 metric 1 route change 192.168.0.0 mask 255.255.255.0 192.168.0.1 metric 2 結果ゲートウェイは以下のとおりになりました。 Network Destination Netmask Gateway Interface Metric 192.168.0.0 255.255.255.0 192.168.0.1 192.168.0.1 2 192.168.0.3 255.255.255.255 192.168.0.2 192.168.0.1 1 上記を試したところ、ping 192.168.0.3が無応答になってしまいました。 同一NIC上のIPアドレスの使い分け方法をご存知でしたらご教示願います。 宜しくお願いします。

  • DMZ領域のWebサーバから外部にアクセスできない

    前回別の部分で質問しましたが… 申し訳ないですがもう一度質問させて下さい。 現在社内LANとインターネットをFW経由で接続するべく設定を行っています。 構成は以下の図のとおりです。  Internet     |     | ------------------ | ブロードバンドルータ | ------------------     | LAN側 *.*.*.41     |     | Untrust /eth03 / Route/ trust-vr     | *.*.*.45                          192.168.100.1 -------------DMZ / eth02 / Route /trust-vr  ----------------- |          | 192.168.100.254            |            | | netscreen-50|-----------------------------|  Webサーバ   | |          |                      .|            | -------------                      -----------------     | Trust / eth01 / NAT / trust-vr     | 192.168.4.254     |     |   Switch     |     |   Intranet *は同じセグメントです。 ここで、DMZ領域のWebサーバからルータへの通信ができずに困っています。 ルータの外側からWebサーバへのpingは応答があるのですが、 Webサーバからルータ(*.*.*.41)へのpingがタイムアウトになってしまいます。 しかし、FWのeth02をTrustにするとWebサーバからルータへのpingが通るようになります。 似たような事象の質問(http://oshiete1.goo.ne.jp/kotaeru.php3?q=1950661)があったので 参考にしたのですが、どうしてもこの部分だけが解決しません。 この事について何かお気付きの方がいらっしゃいましたら、ご教示下さると助かります。 よろしくお願い致します。

  • Windows2003Server NIC2枚挿し

    現在以下のような構成があります。 (NIC1)192.168.1.2 | |Server/Win2003Server | (NIC2)192.168.2.1 ・デフォルトG/WのNICは192.168.1.2 ・192.168.2.10のサーバがNIC2の先に  接続されている。 問題) 1.192.168.2.10宛にpingを送るが、   返答がない。(Request time out) 2.通常のインターネット接続は行える   (NIC1を経由して) 解決したいこと) 192.168.2.10にpingで接続できること。

  • routeコマンドのmetricで迂回

    お世話になります。 windows XPでのrouteコマンドで、同一対地に対して複数のgatewayをそれぞれmetricで優先をつけて登録しました。 例 route add 192.168.0.0 mask 255.255.255.0 192.168.1.XXX metric 1 route add 192.168.0.0 mask 255.255.255.0 192.168.2.XXX metric 2 NICは2枚挿しており、それぞれ192.168.1.YYYと192.168.2.ZZZ です。 metricは優先度、つまりmetricの小さいものから選択し、 だめならmetric 2を使って接続すると思い込んでいました。 実際試験すると、tracert、pingはmetric1で接続できなければそのままタイムアウトします。 metric1に誤ったルータ、2に正しいルータ metric1に存在しないアドレス、2に正しいルータを指定して試験しました。 ルート障害時の迂回は出来ないもでしょうか? 目的はPCに3枚目のインタフェース(モデムなど)を待たせ代替回線と してそちらに迂回させたいと思っています。 よろしくお願いします。

  • NIC2枚差し WEBサーバーで2系統のLANどちらからもWEBサーバー内のWEBページを開きたい

    こんにちは ちょっとうまくできず悩んでおります。 使用環境ですが、 Linux(Apache1.3)サーバーにNIC2枚差しにして eth0:192.168.1.210 eth1:192.168.2.210 二つのLAN環境のどちらからでもWEBサーバーを動かしたいのですが具体的にどのようにしたらよいのでしょうか。 今まである、質問やネット上の資料をもとに DNSの設定やApacheのhttpd.conf内のServerAlias host1 host2、バーチャルホスト設定でそれぞれのIPアドレスで同じドキュメントルートを指定するなども行いましたが、うまくできません。 今のところ、eth0:192.168.1.210からしか反応しません。 もし、このような環境を作られた方いらっしゃいましたら教えてください。 よろしくお願いいたします。

  • NICの2枚挿し(ルーター用に)

    こんにちわ。 RedHat Linux9をADSLルーターにしようとしています。 (ADSLは、YahooBBのです) ですが、NIC一枚だけ(eth0)の時は、ちゃんとインターネットに接続でき外に向けたpingも通るのですが、二枚目(eth1)を認識させたとたんに、外へのpingすら通らなくなってしまいます。 eth0には、DHCPからIPアドレスなどを取得するように設定 eth1には、 IPAddress=192.168.1.1 SubnetMask=255.255.255.0 DefaultGateway:設定なし としています。 /etc/sysctl.comは、 net_ipv4.ip_forward=1 # iptables -t nat -A POSTROUTING -s 192.168.1.0 -o eth0 -j MASQUERADE も打ってみたのですが。。 以上、足りない設定や確認すべきところなど教えていただけませんでしょうか。 よろしくお願いします。