인터페이스 간 포트/IP 바인딩 트래픽 분할

인터페이스 간 포트/IP 바인딩 트래픽 분할

~처럼이것요청 (제 생각에는) 하나의 특정 인터페이스를 통해 라우팅되는 특정 포트 번호에 바인딩된 트래픽과 다른 인터페이스를 통해 라우팅되는 특정 IP에 대한 트래픽을 보고 싶습니다. 이 작업을 수행하려는 서버에는 Ubuntu 14.04.2가 새로 설치되어 있으므로 작업을 수행하는 데 필요한 도구가 많이 있습니다. 하지만 네트워킹에 대한 경험이 많지 않아 어디서부터 시작해야 할지 모르겠습니다. =)

미리 감사드립니다!

편집하다:

일부 세부 사항은 중요하기 때문입니다.

me@server:~$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: em1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 54:9f:35:0a:6a:20 brd ff:ff:ff:ff:ff:ff
    inet 10.22.89.50/24 brd 10.22.89.255 scope global em1
       valid_lft forever preferred_lft forever
    inet6 fe80::569f:35ff:fe0a:6a20/64 scope link 
       valid_lft forever preferred_lft forever
(...)
6: p1p1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 00:0f:53:2d:4b:80 brd ff:ff:ff:ff:ff:ff
    inet 10.22.52.199/26 brd 10.22.52.192 scope global p1p1
       valid_lft forever preferred_lft forever
7: p1p2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 00:0f:53:2d:4b:81 brd ff:ff:ff:ff:ff:ff
    inet 10.22.52.200/26 brd 10.22.52.192 scope global p1p2
       valid_lft forever preferred_lft forever

74.120.50.7모든 트래픽을 를 통해 라우팅하고 모든 트래픽을 를 통해 p1p2포트의 모든 IP로 라우팅하고 싶습니다 .7047p1p1

답변1

확인: 먼저 동일한 서브넷에 연속된 IP 주소가 있는 두 개의 인터페이스가 있습니다. 더 높은 처리량을 얻기 위해 두 인터페이스 사이에 로드를 분산하려는 경우(예: 2개의 기가비트 NIC를 2기가비트 NIC로 전환하려는 경우) 이를 수행하는 더 좋은 방법이 있습니다! 일반적인 용어는 "결합"입니다. "네트워크 본딩" 또는 "NIC 본딩"을 검색하여 찾으세요.

이것이 당신이 하고 있는 일이 아니라고 가정하면, 다음으로 주목해야 할 점은 Linux의 기본 설정은 IP 주소를 호스트에 바인딩된 것으로 처리한다는 것입니다.아니요인터페이스에. /proc이 설정을 변경하는 항목이 있습니다 : /proc/sys/net/ipv4/conf/«INTERFACE»/arp_filter;이 동작을 비활성화하려면 1로 설정하십시오. 이 작업을 수행해야 할 수도 있습니다.

마지막으로 몇 가지 연속된 개인 IP 주소를 작성하고 이를 질문에 사용하여 실제 IP를 편집할 수 있으며 두 인터페이스는 동일한 서브넷에 있지 않습니다. 이런 경우에는 위의 내용을 무시하시고, 혼란을 피하기 위해 향후에는 다른 프라이빗 서브넷을 사용해 주시기 바랍니다.

어쨌든 귀하의 경우에는 귀하가 연결한 질문과 다른 몇 가지 일이 진행되고 있습니다. 해당 답변의 나머지 내용이 적용되어야 합니다.

  1. 두 포트가 동일한 이더넷 네트워크에 있는 경우(예: 동일한 스위치에 연결됨) 실제로 스위치는 트래픽을 보낼 포트를 결정합니다. 값비싼 스위치가 없으면오직대상 MAC 주소를 기준으로 합니다. 누군가가 TCP 포트 번호를 볼 수 있는 스위치를 만들었다고 확신하지만 가격이 저렴하지는 않을 것입니다.

  2. 기본적으로 라우터는 데이터를 보냅니다.도착하다귀하의 서버는 대상 IP 주소에만 관심이 있습니다. "모두"를 얻기 위해서는들어오는10.22.52.199 또는 10.22.52.200으로 가는 포트 7047의 트래픽은 10.22.52.199로 갑니다. 라우터가 이 작업을 수행하도록 설득해야 합니다. 이는 쉽지 않을 수 있습니다.

  3. 74.120.50.7로 나가는 트래픽은 상당히 쉬워야 합니다 ip route add 74.120.50.7/32 via «ROUTER» dev p1p2 src 10.22.52.200. 데이터가 전송되는 장치와 소스 IP를 지정하면 해당 인터페이스에서 데이터가 나올 것이라고 확신합니다. (/32는 255.255.255.255 네트워크 마스크로, 주소가 하나만 있음을 의미합니다.) "ROUTER"의 다음 홉 라우터를 입력해야 합니다. (아마도 어딘가에서 "기본 게이트웨이"라고 불릴 것입니다).

  4. 포트 번호와 마찬가지로 추가 라우팅 테이블을 추가하십시오(링크된 질문에 대한 답변에서) dev p1p1 src 10.22.52.199. 위의 내용이 작동하면 이것도 작동합니다.

트래픽이 올바른 인터페이스로 흐르고 있는지 확인할 수 있습니다. 예를 들면 다음과 같습니다.tcpdump -p -i INTERFACE

관련 정보