私はこのネットワークトポロジーを持っています:
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 192.168.200.254)
状況は次のとおりです。
私がeth0.100を作るとき:
これを修正する方法?
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
マークを付けることができるように、コメントを回答として追加します。
このような問題は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
など)で設定する必要があります。
構成に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つだけです。
このルールの例外はゲートウェイ(またはルーター)であり、複数のネットワークを認識しており、デフォルトゲートウェイもあります...
場合によっては、複数のネットワークのインターフェイスを持つ「マルチホームPC」が必要だが、ルーティングを無効にしたい-ルーター(またはゲートウェイ)をまったく使用しない場合。 PCがゲートウェイからのパケットを予期していて、それが別のPCから来る場合、それはこのパケットを偽としてドロップします。
ネットワーク上のPCに対して、アドレス192.168.100.10のパケットは別のPC経由で送信する必要があると言う方法がありますが、それは次のとおりです。
その後、私はそれをしないように強くアドバイスすることができます。できるだけ簡単にネットワークを維持してください。問題は発生しません。
スイッチは802.1qをサポートし、正しいVLAN構成が必要です。 VLANを1つだけ定義するか、ポートがアクセスモードです(トランクである必要があります)。 Linuxとスイッチのログを確認します。何か見えますか?