UDP 연결 시간 초과는 실제로 무엇을 의미합니까?


18

UDP는 비 연결 프로토콜이므로 "UDP Connection Timeout"에 대한 Sonicwall Firewall의 설정이 혼란 스럽습니다. 기본값은 30 초로 설정되어 있지만 30 초 후에 정확히 어떻게 시간 초과됩니까?

WTF?

실제 상황은 다음과 같습니다. ntp.org 풀에 분당 약 3000 개의 쿼리를 제공하는 NTP 서버가 있습니다. 이것은 대역폭이 아니라 내 SOHO 등급 TZ-200에 약간의 부담을 안겨줍니다. 그러나 연결 수 측면에서 그것을 통과했습니다. UDP 연결이 SonicWall에서 어떻게 든 '활성화되어 있는지'궁금합니다. 비록 그것들은 (정의 적으로) 비 연결되어 있지만.

내가 여기서 무엇을 놓치고 있습니까? "UDP 연결 시간 초과"에 대해 말할 때 SonicWall은 무엇을 의미합니까?


방화벽은 일반적으로 방화벽 내부의 시스템에 의해 설정된 연결 패킷을 허용합니다. 그러나 UDP에는 연결이 없습니다. 따라서 모든 UDP 패킷을 허용하거나 모든 UDP 패킷을 차단하거나 "UDP 연결"이 무엇인지 추측하여 "연결"의 일부인 패킷 만 허용하도록 선택할 수 있습니다. 모든 방화벽 공급 업체가 마지막 접근 방식을 취합니다.
user253751

immibis가 설명했듯이. 네트워크 주소 변환 또는 NAT로 인해 인터넷 / 서브 네트워크 게이트웨이 라우터는 서브 네트워크의 클라이언트가 연결을 시작하는 TCP (가상적으로 모든 트래픽이 TCP 임) 만 허용합니다. 연결이 들어오는 경우 NAT에 포트를 할당 할 방법이 없습니다. 라우터는 라우터를 보낼 사람을 어떻게 알 수 있습니까? UDP는 연결이되어 있지 않으므로 라우터가 어떻게 UDP 요청을 처리 할 수 ​​있습니까? 한 가지 방법은 아웃 바운드 UDP 패킷을 추적하는 것입니다.
마샬 크래프트

서버를 호스팅하는 경우 연결을받을 것으로 예상되는 포트를 전달해야하지만 무엇이든 준비하십시오.
마샬 크래프트

답변:


16

UDP와의 공식적인 "연결"은 없지만 클라이언트는 여전히 요청을 보내고 소스 IP로 응답을 받고 데스티 나토 인 IP 및 포트로 교환 된 포트를 기대한다는 규칙이 있습니다.

따라서 상태 저장 방화벽 및 NAT는 지정된 소스 IP / 소스 포트 / 대상 IP / 대상 포트 조합이있는 패킷과 소스 및 대상 스왑이 포함 된 해당 조합이 "연결"의 일부로 가정합니다. 이를 통해 "발신 연결 만"과 같은 규칙을 UDP에 적용하고 역변환을 응답 패킷에 적용 할 수 있습니다.

불행히도 방화벽이나 NAT는 클라이언트가 서버와의 통신을 완료 한 시점을 알 방법이 없습니다. 따라서 상태 추적 테이블에서 항목을 제거하기 전에 시간 초과를 기다려야합니다. 그것은 당신이 설정하는 시간 초과입니다.

원칙적으로 나가는 연결에 대한 상태 저장 접근 방식을 유지하면서 포트 전달에 상태 비 저장 접근 방식을 사용하는 NAT 상자를 구축하는 것이 가능하지만 모든 경우에 상태 저장 NAT를 사용하는 것이 더 간단하며 공급 업체가하는 것처럼 들립니다.

불행히도 이것은 많은 수의 작은 요청을 처리하는 상태 비 저장 UDP 서버를 빨아들입니다. 방화벽이 서버 자체보다 훨씬 많은 리소스를 소비하는 상황이 발생합니다.


2
위대한 답변 피터 감사합니다! 필자의 경우 SonicWall을 사용하면 특정 방화벽 규칙에서 UDP "연결 시간 초과"를 줄일 수 있으므로 NTP 정책의 규칙을 5 초 (기본값 30)로 줄입니다.
Jon Wadsworth

1
참고 : Sonicwall이보고 한 '총 연결 수'가 ~ 1500에서 ~ 400으로 떨어졌습니다. 완전한! 큰 답변에 다시 한번 감사드립니다.
Jon Wadsworth

1
대부분의 스트리밍 프로토콜은 SIP를 사용하여 협상 한 후 VOIP의 미디어 부분을 포함하는 UDP를 사용합니다. 포트가 끊어 질 때 모든 VOIP 전화 (하드 또는 소프트)가 미디어 연결을 재협상하는 데 큰 영향을주지 않기 때문에 시간 초과가 짧으면 트래픽이없는 경우 (예 : 통화 보류, 양쪽 음소거 등) 문제가 발생할 수 있습니다. . 다른 사람들은 작은 신호를 주기적으로 보내 '살아 유지'를 사용하는데, 이는 5 초 이상 떨어져있을 수 있습니다.
척 반 데르 린덴

11

방화벽이 UDP 연결을위한 연결 테이블을 유지 관리하고 있습니다. 예를 들어 DNS 쿼리를 보내면 방화벽에서 해당 흐름에 대한 항목을 만들어 DNS 응답이 네트워크에 다시 허용되도록합니다. 활동이 없으면 30 초 후에 테이블의 항목이 시간 초과됩니다.


고마워 론 인바운드 연결과 관련하여 해당 연결 테이블에 주석을 달 수 있습니까? 내 NTP 서버가 내부에 있기 때문에 내부의 서버가 항상 소스로 돌아갈 수 있기 때문에 인바운드 연결을 위해 '문을 열어 두지 않아도'될 필요는 없습니다. 규칙). 빠른 답변 감사합니다!
Jon Wadsworth

3
연결 테이블은 연결 방향에 관계없이 작성되며 실제로는 방화벽을 통해 서버에서 응답자에게 반환되는 응답 패킷에 즉시 사용됩니다. 방화벽은 초기 쿼리를 응답과 연결하기 위해 튜플 (src ip, src 포트, dst ip, dst 포트)을 유지 관리합니다. 방화벽에 특정 UDP 세션이 완료되었고 소켓이 닫 혔음을 나타내는 세마포가 실제로 없기 때문에 시간 초과 값이 사용됩니다.
rnxrx

2

NTP 서버는 NAT (방화벽) 뒤에 있습니다. UDP는 응용 프로그램과 OS의 관점에서 볼 때 연결이되지 않으며 대부분의 네트워크 어플라이언스에 연결됩니다.

그러나 NAT 방화벽의 경우 UDP 패킷이 나올 때마다 기록되어 다른 쪽 끝의 응답이 네트워크 내의 동일한 컴퓨터로 리디렉션됩니다. 이를 방화벽에 의해 "연결"이라고합니다.

이론적으로 NAT는 외부 포트가 NTP의 잘 알려진 포트임을 알고 있지만 방화벽이이를 지원하지 않는 것 같습니다. 이 방화벽을 통해 UDP로만 사용하는 경우 연결 시간 제한을 더 작은 수로 설정할 수 있습니다. 또는 응용 프로그램 포트로 설정할 수 있으면 특정 포트에 대해 더 작은 시간 (1 초)으로 설정할 수 있습니다.


1
제한 시간은 NAT에만 국한되지 않습니다. 상태 저장 방화벽에는 하나가 있습니다.
user1686

방화벽은 NAT를 대신하지 않고 NAT를 통해 전환되는 패킷을 필터링하려고 시도하므로 라우터와 NAT와의 상호 관계입니다.
마샬 크래프트

인터넷에 대한 게이트웨이 라우터 컴퓨터는 서브넷에 있고 게이트웨이 라우터에만 실제 인터넷 IP 주소가 있으므로 NAT를 사용해야합니다. 모든 단일 컴퓨터가 인터넷에있는 것이면 엄청난 낭비입니다. 게이트웨이 라우터에는 때때로 하나의 인터넷 IP 주소와 연결된 대규모 컴퓨터 그룹이 있습니다. 웹에서 들어오는 패킷과 네트워크의 컴퓨터간에 일대일로 변환 할 수 있도록 berkly 웹 소켓을 사용합니다. 사람들은 이것을 얻지 못하는 것 같습니다.
마샬 크래프트

0

IPv6에는 NAT가 필요하지 않지만 여전히 방화벽이 UDP와 관련하여 상태가있는 것처럼 보입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.