내 시스템에는 동일한 인터페이스에 두 개의 서로 다른 IP 주소가 있습니다. 두 IP가 모두 동일한 네트워크에 연결되어 있습니다. 이들 중 하나는 기본 경로로 설정됩니다. 이에 대한 부작용은 패킷이 기본 경로가 아닌 IP를 통해 들어오는 경우 기본 경로 인터페이스를 통해 응답이 다시 전송된다는 것입니다. 이 문제를 해결할 방법이 있나요? 요청 소스와 동일한 IP 주소에서 응답이 전송될 것으로 예상합니다.
산출ip address
`5: eth-access: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
link/ether 96:52:79:33:7a:90 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.12/28 scope global eth-access
valid_lft forever preferred_lft forever
inet 192.168.0.13/28 scope global secondary eth-access
valid_lft forever preferred_lft forever `
다음은 잘못된 소스 IP로 발생한 SNMP 요청의 세부 사항입니다. 요청은 IP "13"에서 왔지만 응답은 "12"에서 옵니다.
17:55:24.692149 IP (tos 0x0, ttl 63, id 35960, offset 0, flags [DF], proto UDP (17), length 76)
192.168.0.116.55421 > 192.168.0.13.161: { SNMPv2c C="Test" { GetNextRequest(26) R=361171477 .1.3.6.1.2.1.1 } }
17:55:24.693519 IP (tos 0x0, ttl 64, id 22807, offset 0, flags [DF], proto UDP (17), length 133)
192.168.0.12.161 > 192.168.0.116.55421: { SNMPv2c C="Test" { GetResponse(83) R=361171477 .1.3.6.1.2.1.1.1.0="SunOS Node1 5.11 pn-tpOS-2.6.1-2060112460 i86pc" } }
이 문제를 해결하기 위해 "13" IP에 대해 별도의 IP 테이블을 만들었습니다. 그러나 그것은 문제를 해결하지 못했습니다.
echo 252 snmp >> /etc/iproute2/rt_tables
ip rule add from 192.168.0.13 table snmp
ip route add default via 1192.168.0.1 dev eth-access src 192.168.0.13 table snmp
ip route add 192.168.0.0/28 dev eth-access src 192.168.0.13 table snmp
다음은 시스템의 출력입니다.
# ip rule list
0: from all lookup local
32765: from 192.168.0.13 lookup snmp
32766: from all lookup main
32767: from all lookup default
# ip route list table snmp
default via 192.168.0.1 dev eth-access src 192.168.0.13
192.168.0.0/28 dev eth-access scope link src 192.168.0.13
요청과 동일한 소스 IP 주소가 사용되도록 할 수 있는 방법이 있습니까? 하나의 인터페이스에 동일한 서브넷의 두 IP가 있는 경우.
편집: 명확히 하려면: 서버가 요청의 대상 IP와 동일한 소스 IP로 요청에 응답하는지 확인해야 합니다. 즉, 요청이 대상 IP 192.168.0.13에서 오는 경우 응답은 소스 IP 192.168.0.13이어야 합니다. 현재 SNMP 요청에 대한 응답은 요청이 IP 주소 192.168.0.13에서 올 때 소스 IP로 IP 주소 192.168.0.12를 사용합니다.
편집: 해결 방법 마지막으로 이 테스트를 수행하는 도구가 이 응답을 받아들일 수 있다는 것을 깨달았습니다. 테스트하기 위해 응답을 허용하지 않는 다른 서버에서 SNMPwalk 명령을 사용합니다. (출처 주소가 달라서 그런 것 같습니다.) 하지만 실제 SNMP 도구는 더 관대한 것 같고 변경 사항 없이 내 쪽에서 응답을 받아들입니다. 이것이 어떻게 작동하는지 잘 모르겠지만 공유하고 싶었습니다. 모두의 도움에 감사드립니다.