दो नेटवर्क इंटरफेस पर अलग नेटवर्क ट्रैफ़िक


11

क्या आप यह समझने में अपनी विशेषज्ञता उधार दे सकते हैं कि दो नेटवर्क इंटरफेस पर नेटवर्क ट्रैफ़िक को अलग करने के बारे में कैसे जाना जाए?

जैसा कि मैं इस प्रकार समझता हूं, स्थिर मार्गों का उपयोग नेटवर्क ट्रैफ़िक के लिए किया जाता है जो कि डिफ़ॉल्ट गेटवे का उपयोग करने के लिए डिज़ाइन नहीं किया गया है। डिफ़ॉल्ट गेटवे का उपयोग सभी ट्रैफ़िक के लिए किया जाता है, जो स्थानीय नेटवर्क के लिए नियत नहीं है और जिसके लिए कोई रूटिंग तालिका में कोई पसंदीदा मार्ग निर्दिष्ट नहीं किया गया है।

परिदृश्य इस प्रकार है।

  • नेटवर्क के प्रत्येक कंप्यूटर में दो नेटवर्क कार्ड होते हैं।
  • प्रत्येक के लिए उत्पादन इंटरफ़ेस eth0(GW = 10.10.10.1) है।
  • प्रत्येक के लिए प्रबंधन इंटरफ़ेस eth1(GW = 192.168.100.1) है।
  • उत्पादन और प्रबंधन यातायात को पूरी तरह से अलग किया जाना चाहिए।

मैंने पोस्ट किया है, नीचे, मैंने डेबियन व्हीजी के साथ किन चीजों की कोशिश की है। और, मेरी समस्या यह है कि, हालाँकि, मेरे पास मेजबानों की स्थापना इस तरह से है कि वे दोनों इंटरफेस पर संवाद करते हैं, व्यक्तिगत होस्ट गलत इंटरफ़ेस पर ट्रैफ़िक को "सुन "ते हैं। उदाहरण के लिए:

मेज़बान 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 (समान ifconfigपरिणाम - बस एक अलग अंतिम क्वाड) से पिंग करता हूं , तो eth0चुप है, और मुझे eth1उम्मीद के मुताबिक आईसीएमपी इकोस दिखाई देता है।

मैं यह समझना चाहूंगा कि केवल प्रत्येक ट्रैफ़िक को संभालने के लिए प्रत्येक इंटरफ़ेस को कैसे कॉन्फ़िगर किया जाए, जिसके लिए यह दो प्रमुख लिनक्स किस्मों में जिम्मेदार है। मुझे लगता है कि मैं लगभग वहाँ हूँ, लेकिन मुझे कुछ याद आ रहा है जिसे मैं अभी ढूंढ नहीं पा रहा हूँ।

  • डेबियन व्हीज़ी (7. x) या डेबियन जेसी (8.x)
  • एंटरप्राइज़ लिनक्स (6.x) (RedHat / CentOS / वैज्ञानिक / Oracle)।

मुझे पता है कि डेबियन के लिए एक समाधान व्हीजे और जेसी दोनों के लिए अच्छा होना चाहिए, और यह कि एक ईएल के लिए एक समाधान सभी ईएल 6.x संस्करणों के लिए समान होना चाहिए। मैं कॉन्फ़िगरेशन फ़ाइलों का उपयोग करने के बजाय आदेश निष्पादित करने के लिए RC स्क्रिप्ट का उपयोग करने से बचना चाहूंगा।

डेबियन प्रासंगिक कॉन्फ़िगरेशन फ़ाइलों के बारे में जो मुझे पता है वे हैं:

  • /etc/network/interfaces

ईएल 6. एक्स में, प्रासंगिक कॉन्फ़िगरेशन फाइलें जिनके बारे में मुझे पता है:

  • /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

मेरा डेबियन 8 "जेसी" /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
फ़ारसीगुल्फ़

जवाबों:


7

मैं इस विषय के बारे में अधिक जानना चाहूंगा कि कॉन्फ़िगरेशन को परिष्कृत करने के लिए यह सबसे अच्छा हो सकता है कि यह हो सकता है, लेकिन यहां मेरे पास अभी तक क्या है। यहां तक ​​कि सभी नेटवर्क इंटरफेस ( net.ipv4.conf.all.arp_filter = 0) पर ARP फ़िल्टरिंग को सक्षम किए बिना , जैसा कि @spuk द्वारा उल्लेख किया गया है, इस कॉन्फ़िगरेशन में ट्रैफ़िक पूरी तरह से अलग हो रहा है।

फ़ाइल, /etc/iproute2/rt_tablesईएल 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 showडेबियन पर परिणाम :

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 showईएल 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

मैंने आपके सभी पोस्ट को नहीं पढ़ा है (क्षमा करें, वास्तव में अभी समय व्यतीत नहीं कर सकता है), लेकिन मेरा मानना ​​है कि यह लिनक्स आईपी ​​होस्ट मॉडल को लागू करने के तरीके से संबंधित हो सकता है :

... लिनक्स में IPv4 कार्यान्वयन कमजोर होस्ट मॉडल को डिफॉल्ट करता है। ...

उसी पेज से:

... यदि आईपी स्टैक एक कमजोर होस्ट मॉडल के साथ लागू किया जाता है, तो यह नेटवर्क इंटरफ़ेस की परवाह किए बिना किसी भी स्थानीयकृत पैकेट को स्वीकार करता है, जिस पर पैकेट प्राप्त हुआ था। ...

यही है, लिनक्स में, डिफ़ॉल्ट रूप से, आईपी पते "मेजबान के हैं", सख्ती से "इंटरफ़ेस के लिए" नहीं। आप के माध्यम से उस व्यवहार को बदल सकते arp_filter, rp_filter, arp_announce, arp_ignoresysctls (से मिला LVS: एआरपी समस्या , देखा यहाँ )। इसके अलावा, ip-sysctl.txt देखें ।


इस लेख ने मेरे लिए ठीक काम किया: sivel.net/2006/12/linux-multi-homing
रिचर्ड गोम्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.