
~처럼이것요청 (제 생각에는) 하나의 특정 인터페이스를 통해 라우팅되는 특정 포트 번호에 바인딩된 트래픽과 다른 인터페이스를 통해 라우팅되는 특정 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로 라우팅하고 싶습니다 .7047
p1p1
답변1
확인: 먼저 동일한 서브넷에 연속된 IP 주소가 있는 두 개의 인터페이스가 있습니다. 더 높은 처리량을 얻기 위해 두 인터페이스 사이에 로드를 분산하려는 경우(예: 2개의 기가비트 NIC를 2기가비트 NIC로 전환하려는 경우) 이를 수행하는 더 좋은 방법이 있습니다! 일반적인 용어는 "결합"입니다. "네트워크 본딩" 또는 "NIC 본딩"을 검색하여 찾으세요.
이것이 당신이 하고 있는 일이 아니라고 가정하면, 다음으로 주목해야 할 점은 Linux의 기본 설정은 IP 주소를 호스트에 바인딩된 것으로 처리한다는 것입니다.아니요인터페이스에. /proc
이 설정을 변경하는 항목이 있습니다 : /proc/sys/net/ipv4/conf/«INTERFACE»/arp_filter
;이 동작을 비활성화하려면 1로 설정하십시오. 이 작업을 수행해야 할 수도 있습니다.
마지막으로 몇 가지 연속된 개인 IP 주소를 작성하고 이를 질문에 사용하여 실제 IP를 편집할 수 있으며 두 인터페이스는 동일한 서브넷에 있지 않습니다. 이런 경우에는 위의 내용을 무시하시고, 혼란을 피하기 위해 향후에는 다른 프라이빗 서브넷을 사용해 주시기 바랍니다.
어쨌든 귀하의 경우에는 귀하가 연결한 질문과 다른 몇 가지 일이 진행되고 있습니다. 해당 답변의 나머지 내용이 적용되어야 합니다.
두 포트가 동일한 이더넷 네트워크에 있는 경우(예: 동일한 스위치에 연결됨) 실제로 스위치는 트래픽을 보낼 포트를 결정합니다. 값비싼 스위치가 없으면오직대상 MAC 주소를 기준으로 합니다. 누군가가 TCP 포트 번호를 볼 수 있는 스위치를 만들었다고 확신하지만 가격이 저렴하지는 않을 것입니다.
기본적으로 라우터는 데이터를 보냅니다.도착하다귀하의 서버는 대상 IP 주소에만 관심이 있습니다. "모두"를 얻기 위해서는들어오는10.22.52.199 또는 10.22.52.200으로 가는 포트 7047의 트래픽은 10.22.52.199로 갑니다. 라우터가 이 작업을 수행하도록 설득해야 합니다. 이는 쉽지 않을 수 있습니다.
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"의 다음 홉 라우터를 입력해야 합니다. (아마도 어딘가에서 "기본 게이트웨이"라고 불릴 것입니다).포트 번호와 마찬가지로 추가 라우팅 테이블을 추가하십시오(링크된 질문에 대한 답변에서)
dev p1p1 src 10.22.52.199
. 위의 내용이 작동하면 이것도 작동합니다.
트래픽이 올바른 인터페이스로 흐르고 있는지 확인할 수 있습니다. 예를 들면 다음과 같습니다.tcpdump -p -i INTERFACE