두 개의 네트워크 인터페이스에서 별도의 네트워크 트래픽


11

두 개의 네트워크 인터페이스에서 네트워크 트래픽 분리 구성 방법에 대한 전문 지식을 빌려 주실 수 있습니까?

지금까지 이해했듯이 고정 경로는 기본 게이트웨이를 사용하도록 설계되지 않은 네트워크 트래픽에 사용됩니다. 기본 게이트웨이는 로컬 네트워크로 향하지 않고 라우팅 테이블에 선호 경로가 지정되지 않은 모든 트래픽에 사용됩니다.

시나리오는 다음과 같습니다.

  • 네트워크의 각 컴퓨터에는 두 개의 네트워크 카드가 있습니다.
  • 각각의 생산 인터페이스는 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

Host 50에서 핑 (동일한 ifconfig결과-다른 마지막 쿼드)하면 eth0묵음이 발생하며 ICMP eth1가 예상대로 에코됩니다 .

두 가지 주요 Linux 유형을 담당하는 트래픽 만 처리하도록 각 인터페이스를 구성하는 방법을 알고 싶습니다. 나는 거의 거기에 있다고 생각하지만 찾을 수없는 것만 누락되었습니다.

  • 데비안 eezy 지 (7.x) 또는 데비안 제시 (8.x)
  • 엔터프라이즈 Linux (6.x) (RedHat / CentOS / Scientific / Oracle)

데비안 용 솔루션은 Wheezy와 Jessie 모두에게 좋으며 EL 용 솔루션은 모든 EL 6.x 버전에서 동일해야한다는 것을 알고 있습니다. RC 스크립트를 사용하여 명령을 실행하지 않고 구성 파일을 사용하는 것을 피하고 싶습니다.

데비안에서 내가 아는 관련 구성 파일은 다음과 같습니다.

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

내 데비안 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 1

답변:


7

구성을 최대한 향상시키기 위해이 주제에 대해 더 많이 알고 싶습니다. 그러나 지금까지 제가 가지고있는 것이 있습니다. net.ipv4.conf.all.arp_filter = 0@spuk에서 언급 한 것처럼 모든 네트워크 인터페이스 ( )에서 ARP 필터링을 활성화하지 않아도이 구성에서는 트래픽이 완전히 분리 된 것으로 보입니다.

/etc/iproute2/rt_tablesEL 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에서 가져옵니다.

/etc/sysconfig/network-scripts/ifcfg-eth0"HWADDR"및 "UUID"가없는 EL 6.x 파일 :

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

/etc/sysconfig/network-scripts/ifcfg-eth1"HWADDR"및 "UUID"가없는 EL 6.x 파일 :

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_filter, rp_filter, arp_announce, arp_ignore(에서 가져온 sysctls LVS 다음 ARP 문제 볼, 여기 ). 또한 ip-sysctl.txt를 참조하십시오 .


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.