Раньше у меня Интернет обслуживал роутер другой марки, и там все защитные функции типа DoS detection и SPI были включены. Работало как по маслу, не чувствовалось никаких ограничений, присущих сидению за шлюзом. Сейчас, после того как D-Link исправил багу с Service Name и даже сделал Dual Access (ура!), я решил поменять роутеры местами: теперь DI-604 смотрит в Интернет, а второй — в локалку (ибо умеет форвардить со скоростью более 80 Мбит/с).
И вот проблема: если на DI-604 включена опция Stateful Packet Inspection, то рубится получение списка серверов Counter-Strike / Half-Life (UDP). Доходит ответ только от первого откликнувшегося сервера, остальные разбиваются о стенку, о чём в логе роутера честно сообщается. Я не знаю точно, как происходит опрос серверов в данной игровой системе, но судя по всему, клиент сам шлёт пакет каждому серверу, то есть «открывает соединение UDP», если так можно выразиться в контексте SPI. Почему же роутер блокирует все ответные пакеты кроме первого? Именно «кроме первого», а не «после N секунд тайм-аута», потому что ответы приходят через 10–200 мс. Гипотеза о том, что SPI поддерживает гораздо меньшее количество сеансов, чем NAT (2–3 тыс.), опровергается тем простым фактом, что общее количество опрашиваемых серверов может исчисляться не сотнями и тысячами, а буквально единицами — когда речь идёт о списке избранных серверов.
Прокинуть какой-нибудь UDP-порт на клиента в данном случае не получится, так как игра в режиме клиента использует любые свободные порты: лично замечал от 900 до 60'000. Разумеется, мне эти порты и самому нужны — для соседней машины, исполняющей роль многоцелевого сервера. Разумеется, выставлять беззащитный игровой компьютер в DMZ я так же не собираюсь.
Воспользоваться магической функцией Special Applications не получится по той же причине: там требуется указание фиксированного набора входных портов, который к тому же не может перекрывать те что назначены в Virtual Servers. Кстати, вот ещё вопрос: почему в Special Applications нельзя указать, чтобы входной порт брался из пакета, по которому сработал триггер? С одной стороны, догадываюсь, это и не нужно, так как SPI сам должен позволять такой трафик и без всяких триггеров. Но с другой стороны, ведь не работает же оно подобным образом!
Пока что приходится сидеть с отключённым SPI. Вряд ли это так уж страшно с точки зрения сетевой безопасности, однако всё-таки хочется разобраться в вопросе. Ведь у другого роутера логика вполне соответствует ожиданиям.
PS. Прошивка, разумеется, последняя: 3.21 для DI-604 rev. F4.
|