Dziurkowanie UDP NAT dla linksys wrt54g

0

Nie potrafiłem wyjaśnić dziwnego zachowania NAT, mam nadzieję, że ktoś może pomóc:

W domu mam router Linksys WRT54G.

  1. Klient wysyła pakiet UDP Keep Alive z 192.168.1.20:16688 (nat poza publiczny adres IP / port jest znany przez STUN) na serwer publiczny co 15 sekund. (serwer publiczny zignoruje pakiety utrzymujące przy życiu klienta i nie wysyłające odpowiedzi z powrotem)
  2. sever wysyła losowe wiadomości (kilka pakietów) z powrotem na publiczny adres / port NAT klienta
  3. klient odbiera pakiety z serwera OK

Jednak klient odbiera wiadomości z serwera tylko raz, po czym klient nie może już odbierać wiadomości z serwera. Wąchałem NAT poza linkiem i pakiety osiągają NAT. Wygląda na to, że mapowanie portów NAT jest usuwane nawet przy wysyłaniu pakietów podtrzymujących co 15 sekund.

Testowałem inny NAT i nie widzę takiego problemu.

Dzięki,

Daniel

Daniel
źródło
Implementacje nat UDP są często obarczone niebezpieczeństwem. Domyślam się, że serwer nie wysyła Keep-alives, lub że okno odpowiedzi udp jest mniejsze niż się spodziewano, być może w celu złagodzenia ataków DOS przy użyciu zalewania UDP utrzymywanych przy życiu.
Frank Thomas
Cześć Frank, dziękuję za twoje komentarze. Postaram się wysyłać przy życiu co sekundę i zobaczę, co się stanie. Daniel
Daniel
Wysyłanie pakietu podtrzymywanego co sekundę nie pomaga Co ciekawe, po odebraniu niektórych pakietów z serwera port jest blokowany. Jeśli zrestartuję klienta i użyję innego źródłowego portu klienta, mogę raz odebrać z serwera, a następnie port zostanie ponownie zablokowany. Jak wytłumaczyć to dziwne zachowanie NAT? Moja wersja oprogramowania układowego wrt54g to v1.01.04
Daniel
zgaduję, że zrobiono to, by złagodzić powodzie udp. en.wikipedia.org/wiki/UDP_flood_attack
Frank Thomas
Mam usługę VoIP (iTalkBB), która działa dobrze. Klient wysyła komunikat rejestru UDP SIP (przy użyciu portu 10000) co minutę. Jedyną różnicą jest to, że serwer odsyła odpowiedź dla każdego rejestru. Czy uważasz, że ten tani router jest wystarczająco zaawansowany, aby rozróżnić te dwa warunki?
Daniel