2つのネットワークインターフェイスでのネットワークトラフィックの分離


11

2つのネットワークインターフェイスでネットワークトラフィックの分離を構成する方法を理解するための専門知識を貸していただけませんか?

これまでのところ理解しているように、デフォルトルートを使用するように設計されていないネットワークトラフィックには静的ルートが使用されます。デフォルトゲートウェイは、ローカルネットワーク宛ではなく、ルーティングテーブルで優先ルートが指定されていないすべてのトラフィックに使用されます。

シナリオは次のとおりです。

  • ネットワーク内の各コンピューターには、2つのネットワークカードがあります。
  • それぞれの本番インターフェースはeth0(GW = 10.10.10.1)です。
  • それぞれの管理インターフェースはeth1(GW = 192.168.100.1)です。
  • 生産と管理のトラフィックは完全に分離する必要があります。

以下に、Debian Wheezyで何を試したかを投稿しました。そして、私の問題は、両方のインターフェースで通信するようにホストをセットアップしているにもかかわらず、個々のホストが間違ったインターフェースでトラフィックを「聞く」ように見えることです。例えば:

ホスト140

eth0      Link encap:Ethernet  HWaddr 08:00:27:d1:b6:8f
          inet addr:10.10.10.140  Bcast:10.10.10.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fed1:b68f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1341 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2530 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:641481 (626.4 KiB)  TX bytes:241124 (235.4 KiB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:ad:14:b6
          inet addr:192.168.100.140  Bcast:192.168.100.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fead:14b6/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7220 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5257 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:602485 (588.3 KiB)  TX bytes:1022906 (998.9 KiB)

ホスト140から、次のコマンドを実行しますtcpdump -i eth0。ホスト140の別のセッションで、を実行しping 192.168.100.50ます。

19:17:29.301565 IP 192.168.100.140 > 192.168.100.50: ICMP echo request, id 1400, seq 10, length 64
19:17:30.301561 IP 192.168.100.140 > 192.168.100.50: ICMP echo request, id 1400, seq 11, length 64
19:17:31.301570 IP 192.168.100.140 > 192.168.100.50: ICMP echo request, id 1400, seq 12, length 64
19:17:32.301580 IP 192.168.100.140 > 192.168.100.50: ICMP echo request, id 1400, seq 13, length 64

上記の出力が表示されるのはなぜeth0ですか?10.10.10.140のトラフィックのみが表示されるはずです。eth1予想通り、これもに表示されます。

19:18:47.805408 IP 192.168.100.50 > 192.168.100.140: ICMP echo request, id 1605, seq 247, length 64

ホスト50からpingを実行すると(同じifconfig結果-最後のクワッドが異なるだけです)、eth0何も表示eth1されず、期待どおりにICMPエコーがオンになります。

2つの主要なLinuxの種類で責任があるトラフィックのみを処理するように各インターフェースを構成する方法を理解したいと思います。もうすぐ到着すると思いますが、見つからないようです。

  • Debian Wheezy(7.x)またはDebian Jessie(8.x)
  • Enterprise Linux(6.x)(RedHat / CentOS / Scientific / Oracle)。

DebianのソリューションはWheezyとJessieの両方に適していること、そしてELのソリューションはすべてのEL 6.xバージョンで同じであることを知っています。RCスクリプトを使用してコマンドを実行することは避け、代わりに構成ファイルを使用することを選択します。

Debianで私が知っている関連する構成ファイルは次のとおりです。

  • /etc/network/interfaces

EL 6.xでは、私が知っている関連する構成ファイルは次のとおりです。

  • /etc/sysconfig/network
  • /etc/sysconfig/network-scripts/ifcfg-eth0
  • /etc/sysconfig/network-scripts/ifcfg-eth1
  • /etc/sysconfig/network-scripts/route-eth0
  • /etc/sysconfig/network-scripts/route-eth1
  • /etc/sysconfig/network-scripts/rule-eth0
  • /etc/sysconfig/network-scripts/rule-eth1

私のDebian 8 "Jessie" /etc/network/interfacesファイル:

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# Production interface
auto eth0
allow-hotplug eth0
iface eth0 inet static
  address 10.10.10.140
  netmask 255.255.255.0
  gateway 10.10.10.1

# Management interface
auto eth1
allow-hotplug eth1
iface eth1 inet static
  address 192.168.100.140
  netmask 255.255.255.0

netstat -anrは問題を説明するかもしれないと思います:

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         10.10.10.1      0.0.0.0         UG        0 0          0 eth0
10.10.10.0      0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.100.0   0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.100.0   0.0.0.0         255.255.255.0   U         0 0          0 eth1

チェックiptabels -L -t nat
PersianGulf

回答:


7

このトピックについて詳しく知り、構成を可能な限り最適化するように調整したいのですが、ここまでです。net.ipv4.conf.all.arp_filter = 0@spukで言及されているように、すべてのネットワークインターフェイスでARPフィルタリングを有効にしなくても()、この構成ではトラフィックが完全に分離されているようです。

ファイルは/etc/iproute2/rt_tables、EL 6.xとDEB 7/8で少なくとも同じです。これは、静的ルートの名前付きルーティングテーブルを作成するファイルです。

#
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#
1 mgmt

上記の名前付き静的ルートの数1は、基本的に任意です。または、各スタティックルートは、1〜252の固有の番号を取得します。

/etc/network/interfacesDEB 7/8 のファイル、少なくとも:

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
  iface lo inet loopback

# The production network interface
# The 'gateway' directive is the default route.
# Were eth0 configured via DHCP, the default route would also be here.
auto eth0
allow-hotplug eth0
iface eth0 inet static
  address 10.10.10.140
  netmask 255.255.255.0
  gateway 10.10.10.1

# The management network interface
# The 'gateway' directive cannot be used again because there can be
# one, and only one, default route. Instead, the 'post-up' directives
# use the `mgmt` static route.
auto eth1
allow-hotplug eth1
iface eth1 inet static
  address 192.168.100.140
  netmask 255.255.255.0
  post-up ip route add 192.168.100.0/24 dev eth1 src 192.168.100.140 table mgmt
  post-up ip route add default via 192.168.100.1 dev eth1 table mgmt
  post-up ip rule add from 192.168.100.140/32 table mgmt
  post-up ip rule add to 192.168.100.140/32 table mgmt

ip route showDebianでの結果:

default via 10.10.10.1 dev eth0
10.10.10.0/24 dev eth0  proto kernel  scope link  src 10.10.10.140
192.168.100.0/24 dev eth1  proto kernel  scope link  src 192.168.100.140

EL 6.x /etc/sysconfig/networkファイル:

NETWORKING=yes
HOSTNAME=localhost.localdomain
GATEWAY=10.10.10.1

上記では、GATEWAYがデフォルトのルートです。以下では、BOOTPROTOCOLがDHCPに設定されており、デフォルトルートはDHCPから取得されます。

EL 6.x /etc/sysconfig/network-scripts/ifcfg-eth0ファイル、「HWADDR」と「UUID」なし:

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTOCOL=none
IPADDR=10.10.10.140
NETMASK=255.255.255.0
NETWORK=10.10.10.0
BROADCAST=10.10.10.255

EL 6.x /etc/sysconfig/network-scripts/ifcfg-eth1ファイル、「HWADDR」と「UUID」なし:

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTOCOL=none
IPADDR=192.168.100.140
NETMASK=255.255.255.0
NETWORK=192.168.100.0
BROADCAST=192.168.100.255

EL 6.x /etc/sysconfig/network-scripts/route-eth1ファイル:

192.168.100.0/24 dev eth1 table mgmt
default via 192.168.100.1 dev eth1 table mgmt

EL 6.x /etc/sysconfig/network-scripts/rule-eth1ファイル:

from 192.168.100.0/24 lookup mgmt

ip route showEL 6.x での結果:

192.168.100.0/24 dev eth1  proto kernel  scope link  src 192.168.100.160
10.10.10.0/24 dev eth0  proto kernel  scope link  src 10.10.10.160
169.254.0.0/16 dev eth0  scope link  metric 1002
169.254.0.0/16 dev eth1  scope link  metric 1003
default via 10.10.10.1 dev eth0

4

私はあなたの投稿を完全に読んではいませんが(申し訳ありませんが、今は本当に時間を費やすことができません)、LinuxがIPホストモデルを実装する方法に関連している可能性があります:

... LinuxのIPv4実装は、デフォルトで弱いホストモデルになります。...

同じページから:

... IPスタックが弱いホストモデルで実装されている場合、パケットが受信されたネットワークインターフェイスに関係なく、ローカルに宛てられたパケットを受け入れます。...

つまり、Linuxでは、デフォルトで、IPアドレスは厳密に「インターフェースに」ではなく、「ホストに属している」。あなたは経由してその動作を変更することができarp_filterrp_filterarp_announcearp_ignore(から得たのsysctl LVS:ARP問題見て、ここに)。また、ip-sysctl.txtも参照してください。


この記事では私のために罰金を働いた:sivel.net/2006/12/linux-multi-homing
リチャード・ゴメス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.