web-dev-qa-db-ja.com

Linux VLANルーティング

私はこのネットワークトポロジーを持っています:

network 192.168.100.0/24 vlan 100
network 192.168.200.0/24 vlan 200

1つのubuntuサーバー(1つのエーテルに2つのVLAN)eth0.100(ip:192.168.100.10/24)eth0.200(ip:192.168.200.20/24 def gw 1​​92.168.200.254)

状況は次のとおりです。

  1. eth0.200がアップ
  2. eth0.100ダウン。
  3. サブネット192.168.100.0/24から192.168.200.20への接続は問題ありません。

私がeth0.100を作るとき:

  • 192.168.100.0/24ネットワークから192.168.200.20にアクセスできません。 (間違ったインターフェース応答。パッケージが192.168.100.0/24から192.168.200.20に到着すると、192.168.100.10によって応答が返されます)

これを修正する方法?

rp_filter = 0/rp_filter = 1で試した

#cat /etc/network/interfaces
iface eth0.200 inet static
    address 192.168.200.20
    netmask 255.255.255.0
    vlan-raw-device eth0
    gateway 192.168.200.254
    post-up ip r a 192.168.200.6 via 192.168.200.250 #one ip behind wifi

iface eth0.100 inet static
    address 192.168.100.10
    netmask 255.255.255.0
    vlan-raw-device eth0

一緒に仕事を探しています:

iptables -A PREROUTING -t mangle -i eth0.100 -j MARK --set-mark 100
iptables -A PREROUTING -t mangle -i eth0.200 -j MARK --set-mark 200
making some route tables like t100 and t200
and then ading rule like:
ip rule add from all fwmark 100 table t100
ip rule add from all fwmark 200 table t200

IT WAS RP_FILTER

net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.eth0/100.rp_filter = 0
net.ipv4.conf.eth0/200.rp_filter = 0
6
MealstroM

マークを付けることができるように、コメントを回答として追加します。

このような問題はnet.ipv4.conf.*.rp_filterが原因で発生します。

rp_filterが有効になっていると、カーネルは、トラフィックの送信元アドレスがそのサーバー上の別のインターフェースのサブネットと一致するインターフェースに着信するトラフィックを拒否します。

設定がnet.ipv4.conf.all.rp_filterで有効になっているが、net.ipv4.conf.eth0.rp_filterなどの特定のインターフェースでは有効になっていない場合、問題が発生することがよくあります。
rp_filterのデフォルト設定は0ですが、多くのディストリビューションがこの設定をオーバーライドしています。ブート時にディストリビューションによって手動で設定されるため、net.ipv4.conf.all.rp_filterでの設定は機能しなくなったため、特定のインターフェイス(net.ipv4.conf.eth0.rp_filterなど)で設定する必要があります。

4
Patrick

構成にip r a 192.168.200.6 via 192.168.200.250行が必要な場合、ネットワークのセグメント化に問題があると思います...宣言すると、eth0.200はネットワーク192.168.200.0/24であり、なぜ必要か他のPC経由でIPアドレス192.168.200.6のPCに移動するにはそれはあまり体系的ではありません。

すべてのネットワークは、1つのルーターのみでルーティングする必要があります。 192.168.100.0/24と192.168.200.0/24ネットワーク間のトラフィックをルーティングしているルーターのどこかにネットがある場合、このマシンでこの構成を使用できますが、このPCでルーティングを無効にする必要があります。 PCは両方のネットワーク上にありますが、トラフィックはルーターを経由します。これは、ネットワーク上のPCが期待しているものです。

PCが他のユーザーと通信する場合、明確なケースでは、ネットワークアドレスとネットマスクが表示され、どの方法を選択するかがわかります。たとえば、IPアドレスが192.168.200.20で、ネットマスクが255.255.255.0の場合、これはこの状況です(ipcalcが使用されます)。

# ipcalc 192.168.200.20/24
Address:   192.168.200.20       11000000.10101000.11001000. 00010100
Netmask:   255.255.255.0 = 24   11111111.11111111.11111111. 00000000
Wildcard:  0.0.0.255            00000000.00000000.00000000. 11111111
=>
Network:   192.168.200.0/24     11000000.10101000.11001000. 00000000
HostMin:   192.168.200.1        11000000.10101000.11001000. 00000001
HostMax:   192.168.200.254      11000000.10101000.11001000. 11111110
Broadcast: 192.168.200.255      11000000.10101000.11001000. 11111111
Hosts/Net: 254                   Class C, Private Internet

通常の場合、このコンピューターは192.168.200.1-192.168.200.254の範囲内のすべてのPCに直接接続できます。宛先IPを含むarp要求をブロードキャストアドレスに送信し、宛先PCが応答し、PCがリンクアドレス(MAC)を持ちます。宛先PCのIPアドレス。パケットを直接送信できます。

別のサブネットからPCに接続する場合、IPアドレスとネットマスクを使用して直接計算できず、宛先PCのIPアドレスを使用してパケットを送信しますが、ゲートウェイ(通常はデフォルトゲートウェイ)のMACアドレスを使用します。ゲートウェイはこのネットを直接接続しているか、別のゲートウェイを介してパケットを送信します...そして、私たちのコンピューターへの応答は、ネットワーク上の別のコンピューターからではなく、それ自体のゲートウェイから送信されます。

通常の場合、ネットワーク上のすべてのPCに必要な仕様は3つだけです。

  1. IPアドレス
  2. ネットマスク
  3. デフォルトゲートウェイ

このルールの例外はゲートウェイ(またはルーター)であり、複数のネットワークを認識しており、デフォルトゲートウェイもあります...

場合によっては、複数のネットワークのインターフェイスを持つ「マルチホームPC」が必要だが、ルーティングを無効にしたい-ルーター(またはゲートウェイ)をまったく使用しない場合。 PCがゲートウェイからのパケットを予期していて、それが別のPCから来る場合、それはこのパケットを偽としてドロップします。

ネットワーク上のPCに対して、アドレス192.168.100.10のパケットは別のPC経由で送信する必要があると言う方法がありますが、それは次のとおりです。

  • 体系的ではない(上記を参照)
  • 192.168.200.0/24ネットワーク内のすべてのPCがそれを認識している必要があるため、管理者にとっては不快です。ネットワーク192.168.100.0/24ネットワーク内のすべてのPCは、192.168.100.10ゲートウェイ経由で192.168.200.20に接続する必要があります。混乱していませんか?

その後、私はそれをしないように強くアドバイスすることができます。できるだけ簡単にネットワークを維持してください。問題は発生しません。

2
Jan Marek

スイッチは802.1qをサポートし、正しいVLAN構成が必要です。 VLANを1つだけ定義するか、ポートがアクセスモードです(トランクである必要があります)。 Linuxとスイッチのログを確認します。何か見えますか?

0
Dom