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

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

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

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

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


답변

구성을 최대한 향상시키기 위해이 주제에 대해 더 많이 알고 싶습니다. 그러나 지금까지 제가 가지고있는 것이 있습니다. 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

답변

나는 당신의 모든 게시물을 읽지 못했지만 (죄송합니다. 지금 시간을 실제로 보낼 수는 없습니다), Linux가 IP 호스트 모델을 구현하는 방식과 관련이 있다고 생각합니다 .

… Linux의 IPv4 구현은 기본적으로 약한 호스트 모델입니다. …

같은 페이지에서 :

… IP 스택이 취약한 호스트 모델로 구현 된 경우 패킷이 수신 된 네트워크 인터페이스에 관계없이 로컬로 지정된 패킷을 수락합니다. …

즉, Linux에서는 기본적으로 IP 주소가 “인터페이스에 속하며”엄격하게 “인터페이스에”있지 않습니다. 당신은을 통해 그 동작을 변경할 수있는 arp_filter, rp_filter, arp_announce, arp_ignore(에서 가져온 sysctls LVS 다음 ARP 문제 볼, 여기 ). 또한 ip-sysctl.txt를 참조하십시오 .