Apa arti batas waktu koneksi UDP?

18

Karena UDP adalah protokol tanpa koneksi, saya bingung dengan pengaturan pada Firewall Sonicwall saya untuk "UDP Connection Timeout". Ini diatur pada default 30 detik - tetapi apa yang tepat waktu setelah 30 detik?

WTF?

Inilah situasi dunia nyata saya yang sebenarnya: Saya memiliki server NTP di kumpulan ntp.org yang melayani sekitar 3000 pertanyaan per menit. Ini memberikan sedikit tekanan pada SOHO grade TZ-200 - tidak dalam hal bandwidth; tetapi dalam hal # koneksi itu telah melewatinya. Saya bertanya-tanya apakah koneksi UDP entah bagaimana 'tetap hidup' di SonicWall; meskipun mereka (menurut definisi) tanpa koneksi.

Apa yang kulewatkan di sini? Apa arti SonicWall ketika berbicara tentang "Batas Waktu Koneksi UDP"?

Jon Wadsworth
sumber
Firewall biasanya mengizinkan paket untuk koneksi yang dibuat oleh mesin di dalam firewall. Tetapi UDP tidak memiliki koneksi. Jadi pilihannya adalah mengizinkan semua paket UDP, memblokir semua paket UDP, atau mencoba menerka apa "koneksi UDP" sehingga hanya mengizinkan paket yang merupakan bagian dari "koneksi" itu. Semua (?) Vendor firewall mengambil pendekatan terakhir.
user253751
Seperti yang dijelaskan oleh immibis. Karena Terjemahan Alamat Jaringan atau NAT, router gateway internet / subnetwork hanya akan mengizinkan TCP (hampir semua lalu lintas adalah TCP) di mana klien di subnetwork memulai koneksi. Karena tidak ada cara untuk menetapkan port untuk NAT jika koneksi masuk. Bagaimana router mengetahui kepada siapa untuk mengirimkannya? UDP bahkan tidak memiliki koneksi jadi bagaimana router untuk menangani permintaan UDP yang masuk? Salah satu caranya adalah dengan melacak paket UDP keluar.
kerajinan Marshal
Jika Anda hosting server Anda harus meneruskan port yang Anda harapkan untuk menerima koneksi, meskipun bersiaplah untuk apa pun.
kerajinan Marshal

Jawaban:

16

Meskipun tidak ada "koneksi" formal dengan UDP, masih ada konvensi bahwa klien mengirim permintaan dan berharap untuk mendapatkan tanggapan kembali dengan IP sumber dan port yang ditukar dengan IP dan port Destinatoin.

Firewall dan NAT yang stateful mengasumsikan bahwa paket dengan kombinasi IP sumber / port sumber / IP Tujuan / port Tujuan dan kombinasi yang sesuai dengan sumber dan tujuan ditukar membentuk bagian dari "koneksi". Ini memungkinkan aturan seperti "koneksi keluar saja" untuk diterapkan ke UDP dan memungkinkan terjemahan terbalik untuk diterapkan ke paket respons.

Sayangnya firewall atau NAT tidak memiliki cara untuk mengetahui kapan klien selesai berbicara dengan server. Jadi harus menunggu batas waktu sebelum menghapus entri dari tabel pelacakan keadaan itu. Itulah batas waktu yang Anda atur.

Pada prinsipnya adalah mungkin untuk membangun kotak NAT yang menggunakan pendekatan stateless untuk port forward sementara mempertahankan pendekatan stateful untuk koneksi keluar tetapi lebih mudah untuk hanya menggunakan stateful NAT untuk semuanya dan sepertinya ini adalah apa yang dilakukan vendor Anda.

Sayangnya karena Anda telah menemukan ini menyebalkan untuk server UDP stateless yang melayani sejumlah besar permintaan kecil. Anda berakhir dalam situasi di mana firewall menghabiskan jauh lebih banyak sumber daya daripada server itu sendiri.

Peter Green
sumber
2
Terima kasih atas jawaban hebat Peter! Dalam kasus saya, SonicWall memungkinkan saya untuk mengurangi "batas waktu koneksi" UDP pada aturan firewall tertentu, jadi saya akan mengurangi aturan kebijakan NTP menjadi 5 detik (dari default 30).
Jon Wadsworth
1
Catatan: Setelah melakukan itu, saya melihat 'koneksi total' seperti yang dilaporkan oleh Sonicwall turun dari ~ 1500 ke ~ 400. Sempurna! Sekali lagi terima kasih atas jawabannya.
Jon Wadsworth
1
Ketahuilah bahwa sebagian besar protokol streaming menggunakan UDP, yang mencakup bagian media VOIP (setelah dinegosiasikan menggunakan SIP). Kehabisan waktu habis dapat menyebabkan masalah jika tidak ada lalu lintas (mis. Panggilan ditahan, kedua belah pihak dimatikan, dll.) Karena tidak semua telepon VOIP (keras atau lunak) hebat dalam negosiasi ulang koneksi media jika port-port terjatuh . Lainnya menggunakan 'tetap hidup' dengan mengirimkan sinyal kecil secara berkala, yang bisa terpisah lebih jauh dari 5 detik.
Chuck van der Linden
11

Firewall Anda memelihara tabel koneksi untuk koneksi UDP. Misalnya, ketika Anda mengirim permintaan DNS, firewall membuat entri untuk aliran itu sehingga balasan DNS akan diizinkan kembali ke jaringan Anda. Entri dalam tabel habis setelah 30 detik tidak ada aktivitas.

Ron Trunk
sumber
Terima kasih Ron. Bisakah Anda mengomentari Tabel Koneksi itu, sehubungan dengan koneksi Inbound? Karena server NTP saya ada di dalam, seharusnya tidak ada kebutuhan untuk 'menjaga pintu tetap terbuka' untuk koneksi inbound tersebut, karena Server saya di dalam selalu dapat kembali ke sumbernya (saya memiliki open-outbound terbuka lebar aturan). Terima kasih atas jawaban cepatnya!
Jon Wadsworth
3
Tabel koneksi dibuat terlepas dari arah koneksi dan sebenarnya langsung digunakan untuk paket respons yang kembali dari server Anda melalui firewall yang kembali ke querier. Firewall mempertahankan tuple (ip src, port src, ip dst, port dst) untuk mengaitkan kueri awal dengan respons. Karena sebenarnya tidak ada semafor yang menunjukkan kepada firewall bahwa sesi UDP tertentu selesai dan soket telah menutup nilai batas waktu yang akhirnya digunakan.
rnxrx
2

Server NTP Anda berada di belakang NAT (firewall) Anda. UDP tidak terhubung dari sudut pandang aplikasi dan OS dan untuk sebagian besar peralatan jaringan di sepanjang jalan.

Namun, untuk firewall NAT Anda, ia merekam setiap kali paket UDP keluar sehingga respons dari ujung yang lain akan berakhir diarahkan ke komputer yang sama di dalam jaringan Anda. Ini disebut "koneksi" oleh firewall.

Sekarang, secara teori, NAT tahu bahwa port eksternal akan menjadi port NTP yang terkenal, tetapi sepertinya firewall Anda tidak mendukungnya. Jika ini adalah satu-satunya penggunaan Anda untuk UDP melalui firewall ini, Anda dapat mengatur batas waktu Koneksi ke nomor yang lebih kecil. Sebagai alternatif, jika memungkinkan Anda mengatur berdasarkan port aplikasi, Anda dapat mengaturnya ke waktu yang lebih kecil (1 detik, katakanlah) untuk port spesifik tersebut.

Alan
sumber
1
Batas waktu tidak spesifik untuk NAT; setiap firewall stateful akan memilikinya.
grawity
Firewall tidak melakukan NAT melainkan mencoba memfilter paket yang sedang transisi melalui NAT, sehingga saling terkait dengan router dan NAT.
kerajinan Marshal
Router gateway ke internet Harus menggunakan NAT karena komputer mana pun duduk di subnet, hanya router gateway yang memiliki alamat IP internet aktual. Akan sangat boros jika setiap komputer adalah barang di internet. Router gateway terkadang memiliki sekelompok besar komputer yang semuanya dikaitkan dengan satu alamat IP internet. Ia menggunakan soket web berkly untuk dapat menerjemahkan satu ke satu antara paket yang masuk dari web dan komputer di jaringannya. Orang-orang sepertinya tidak mendapatkan ini.
kerajinan Marshal
0

IPv6 tidak perlu NAT, namun masih tampak seolah-olah firewall stateful sehubungan dengan UDP.

David Howard
sumber