web-dev-qa-db-ja.com

異なるサブネットで2つのethインターフェイスを適切に構成する

Linuxとネットワーキングの両方でバックグラウンドが豊富な誰かが私を助けてくれますか?私はこれについて明確な答えを探してインターネットを精査し、同じセットアップでアクセスできるボックスを比較しましたが、ボックスを機能させることができません。

基本的な状況はこれです:

===========================

RHEL 6 Linuxボックスには、2つのイーサネットインターフェイスがあります。

eth0 = 10.10.5.10/24
eth1 = 10.10.6.10/24

[root@box ~]# netstat -nr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
10.10.5.0      0.0.0.0         255.255.255.0   U         0 0          0 eth0
10.10.6.0      0.0.0.0         255.255.255.0   U         0 0          0 eth1
0.0.0.0        10.10.5.254     0.0.0.0         UG        0 0          0 eth0

iP転送が有効になっており、アクティブです。

問題:

Eth1または10.10.6.xネットワークと同じサブネット上のクライアントは、このボックスのeth1で実行されているリソースに対してpingおよびtelnetを実行できます。

ただし、他のサブネット上のクライアントはできません。したがって、私のワークステーションから、ボックスのeth0のリソースに終日pingとtelnetを実行できますが、eth1には何も実行できません。

このセットアップを私の環境の同様の性質を持つ別のボックスと比較しても、識別できる違いはありません。

ここにいくつかのファイルがあります:

# cat ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="none"
HWADDR="Omitted"
IPADDR="10.10.5.10"
NETMASK="255.255.255.0"
NETWORK="10.10.5.0"
ONBOOT="yes"
TYPE="Ethernet"
USERCTL="no"

# cat ifcfg-eth1
DEVICE="eth1"
BOOTPROTO="none"
HWADDR="omitted"
IPADDR="10.10.6.10"
NETMASK="255.255.255.0"
NETWORK="10.10.6.0"
ONBOOT="yes"
TYPE="Ethernet"
USERCTL="no"

# cat route-eth0 
default via 10.10.5.254 dev eth0

# cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=box
GATEWAY=10.10.5.254
NOZEROCONF=yes

あなたが提供できるあらゆる援助は高く評価されます!

ありがとう。

より多くの情報を追加しますが、簡潔さを含みます:

# ip addr
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    inet 10.10.5.10/24 brd 10.10.5.255 scope global eth0
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    inet 10.10.6.10/24 brd 10.10.6.255 scope global eth1
5
beaconfield

現在表示されている設定で:

  • あなたには2つの側面があります:

    • eth1側(10.10.6.10インターフェース、10.10.6.0/24 LAN上)
    • eth0側(10.10.5.10インターフェース、10.10.5.0/24 LAN上の)
    • そのマシンのデフォルトゲートウェイをeth0側に定義しました(デフォルトのgw ip:10.10.5.254)
  • したがって

    • eth1側:
      • [必須] 10.10.6.0/24のすべてのマシンが10.10.6.10と(および相互に)通信できる必要があります(ファイアウォールの問題はないと想定しています)
      • [必要条件]さらに、10.10.6.0/24のデフォルトゲートウェイが「10.10.6.10」と定義されているマシンは、マシンを経由して他のマシンにパケットを送信できます(10.10.6.10/24-> eth1 [ machine] eth0->他のLAN)。実際にはデフォルトゲートウェイとして設定する必要はありませんが、eth0側のLANの場合、LANを10.10.6.10ゲートウェイに関連付ける必要があります。
    • eth0側:
      • [必須] 10.10.5.0/24上のマシンは10.10.5.10(eth0)を参照し、それと(そして相互に)通信できる必要があります。
      • [必要条件]別のLAN上のすべてのマシンは、10.10.5.254 IPを持つマシン(例:追加のホップ)を介してeth0と通信できる必要があります(例:そのマシンに2つのサブネットがある場合、同じ側に10.10.5.254/24別のインターフェイスのeth0および10.xyz/24と同様に、10.xy0/24のマシンは、ルートを持つことで10.10.5.10にパケットを送信できます:ゲートウェイ10.xyzを持つ10.10.5.0/24)。
      • その場合は、10.10.6.0/24に到達するための追加のルートが必要です:ゲートウェイ10.x.y.z経由で10.10.6.0/24

言葉で説明すると複雑になる場合があります...

役立つ情報:ネットワークのリスト()と各ネットワークのゲートウェイを教えてください。

今私はあなたがしようと思ったと思います:

 [everything other machines (even internet, via the exterior internet gateway)]
                  |
                  |(links via switch(s) for 10.x.y.0/24 network, for example.
                  |   If you have such an additionnal LAN.
                  |   Maybe it's even "the Internet", and therefore not in 10.x anything,  
                  |   but this is just an example.)
                  |
                  |      
      (10.x.y.z?) |  [---------------]
   (or Internet?)ethZ[some router/box]ethW(10.10.5.254)
                     [---------------] |
                                       |
                                       |(links via switch(s) for 10.10.5.0/24 network)
                                       |
                             [-------] |
             (10.10.6.10)eth1[yourbox]eth0(10.10.5.10)
                          |  [-------]   
                          |
                          |(links via switch(s) for 10.10.5.0/24 network)
                          |
                          |  [---------------------------]
                         ethx[any machine in 10.10.6.0/24]
                             [---------------------------]

設定をデバッグする一般的な方法:

  • あなたがIPパケットであると想像してください:あなたはソースIPと宛先IPを持っています。
  • 次に、ソースにあるインターフェースで、そのマシンのルートがどのネクストホップであるかを確認します。そしてそこに行きます(ただし、最初にマシンのセットアップで、たとえばeth0/eth1マシンで、1つのインターフェースから別のインターフェースに移動するにはipforwardが必要であることを確認します)。次に、一度に1ホップ、目標に向かって進みます(そして、ソースに戻ります。宛先マシンのroute/defaultgwが壊れていることがあり、そのため、応答パケットが正しいパス経由で送信されません)
    • ex1(非常に簡単):10.10.6.10を10.10.5.10に送信しようとしています:step1はeth1(10.10.6.10)を使用しています。そのマシンには「10.10.5.0/24が直接ここにあり、eth0にある」というルートがあります。 Ipforwardingを使用すると、eth1からeth0にホップできます。 eth0に進みます。ステップ2:あなたは今(同じIPパケット)eth0にいます。これがあなたの目的地であることがわかります:良い。ステップ2b:応答パケット:送信元/宛先の逆:パケットになりました(10.10.5.10-> 10.10.6.10 =):神に感謝します。ローカルルートは、次のホップがeth1にあることを通知します。 step4:no eth1:目的地にいます。良い。
    • ex2(少し長いex :)あなたは "any_machine"、10.10.6.12(eth1側)からのパケットです。あなたはdestinatino google(例えば8.8.8.8)として到達しようとします。つまり、あなたは「10.10.6.12-> 8.8.8.8」であり、最初は10.10.6.12インターフェース(たとえば、eth3)に座っています。 「上記の前提条件である」「any_machine」上のローカルルートは、「デフォルトのgw = 10.10.6.10」であるため、「yourbox」にホップしてeth1側に到着します。 step2:現在「yourbox/eth1」にいます:ローカルルートは「eth0を介してデフォルトのgw:10.10.5.254に移動する必要があります(そして、「yourbox」のipforwardによりeth1からeth0にホップすることができます)。これでeth0に到着し、デフォルトのgwルートに従って、ethW(10.10.5.254)の「somerouter」に後で到着します。など...(そして、帰りのルートを確認することを忘れないでください)
3
Olivier Dulac

デフォルトゲートウェイは10.10.5.254ですが、eth1インターフェイスは10.10.6.10/24として設定されています。これが効果的に意味することは、10.10.6.xインターフェイスは異なるサブネット上にあるため、デフォルトゲートウェイにヒットできないことです。

オプションを適切に評価するには、より一般的なネットワーク情報が必要ですが、これまでに投稿されたものからの2つのオプションは次のとおりです。

  • 2つのネットワークが実際に/ 24サブネットであることを確認します。その場合は、そのインターフェースの構成ファイルでeth1の適切なゲートウェイを設定します。
  • インターフェースがより大きなスーパーネットの一部である場合、同じゲートウェイを使用するように/ 16サブネット上に存在するように2つのインターフェースを構成します。
1
NcA

IP転送を有効にしましたか?

sysctl net.ipv4.ip_forward

0と表示されている場合は、パケットがルーティングされていません。

それを有効にする

sysctl -w net.ipv4.ip_forward=1

そして、以下を/etc/sysctl.confに追加して永続化します。

net.ipv4.ip_forward = 1
0
artifex