최근 커널에서는 일부 ICMP-Reply 메시지가 사용자 공간에 도달하지 않습니다.

최근 커널에서는 일부 ICMP-Reply 메시지가 사용자 공간에 도달하지 않습니다.

저는 2.6.23(예, 오래된 버전이므로 마이그레이션한 이유입니다)에서 3.18LTS로 애플리케이션을 마이그레이션하려고 합니다. 애플리케이션은 ping 패킷을 사용하여 동일한 대상에 대한 여러 네트워크 링크를 모니터링합니다. 다음 홉 라우터(이더넷) 또는 네트워크 인터페이스(셀룰러 데이터라고도 알려진 지점 간 링크)에 의해 다양한 링크가 선택됩니다. 서로 다른 경로가 동일한 대상에 도달하도록 강제하기 위해 나가는 패킷에는 서로 다른 방화벽 태그가 표시됩니다. 그런 다음 라우팅 규칙을 사용하여 동일한 대상에 대해 서로 다른 경로가 있는 서로 다른 라우팅 테이블을 선택합니다. 나가는 경로는 2.6.23과 3.18 모두에서 잘 작동합니다. 그러나 들어오는 ICMP 응답의 경우에는 그렇지 않습니다. 그들은 오고 있습니다. tcpdump를 보면 알 수 있습니다. 하지만 3.18에서는 일부 패킷이 사용자 공간으로 전달되지 않습니다. 100% 확신할 수는 없지만 ping 대상(예: ICMP 응답의 소스 주소)에 대한 "정상적인" 경로가 없는 경우 이런 일이 발생할 수 있다고 생각합니다. 이는 정상적인 경로 조회가 실패할 경우 패킷을 제외하는 일종의 오해의 소지가 있는 수신 필터링처럼 보입니다.

나는 올바른 길을 가고 있습니까? 그렇다면 이 필터링을 비활성화하는 방법이 있습니까? 그렇지 않다면 이러한 행동 변화의 원인은 무엇입니까?

답변1

글쎄요, 제가 직접 찾았어요.

정답은 /proc/sys/net/ipv4/conf/*/rp_filter. 이 옵션은 다음에 설명되어 있습니다.리눅스 재단. 이것은 오래된 설정이지만 Ubuntu는 07.04에서 14.04 사이에 기본값을 변경한 것으로 보입니다. 값을 1에서 다시 0으로 변경하면 문제가 해결되었습니다.

관련 정보