Kucher2 Posted April 25, 2006 Posted April 25, 2006 Есть маленькая локальная сеть с выходом в Интернет через сервер FreeBSD 4.9 + NAT + SQUID. При попытке обнаружить сервера QUAKE или КС - машины внутри сети и игровые сревера в Интернете лезут на UDP-порты в диапазонах примерно 26000-2800 и 1240-4500. Если я открываю эти порты - сервера вроде как находятся, но сединиться с ними невозможно. Я подозреваю, что проблема в UDP - пакетах, которые неправильно транслируются NAT. Кто сталкивался с таким? Как победить? Вставить ник Quote
Saenara Posted April 26, 2006 Posted April 26, 2006 Вдумчивое чтение вывода tcpdump поможет. Нат тут совершенно не виноват, как правило. Вставить ник Quote
Kucher2 Posted April 26, 2006 Author Posted April 26, 2006 Т.е. Вы хотите сказать, что играть в игры типа quake и КС в таком варианте - это лишь проблема правильной настройки сервера? Это возможно? Ведь вся сеть имеет только 1 реальный IP.. а если играть захочет скажем - человек 5 одновремнно? Вставить ник Quote
Saenara Posted April 26, 2006 Posted April 26, 2006 У меня 50 одновременно играло :-) Проблема -- в правильной настройке пропуска трафика через гейт. КС, например, лезет не только на игровой сервер. tcpdump, вобщем. Вставить ник Quote
Kucher2 Posted April 26, 2006 Author Posted April 26, 2006 Спасибо, обнадёжили. Буду рыть. :) Но проблема в том, что я новичёк. Не могли бы вы хоть примерно сказать что смотреть? TCPDUMP'ом я вижу трафик на шлюз и со шлюза, вижу порты, но мне это ничего не говорит о том, почему не работает. Например на внутреннем иф я вижу: 10.0.0.1.2615 > 69.28.151.162.27010: udp 9 На внешнем: 10.0.0.1.gdp-port > 69.28.151.162.27010 udp 29 10.0.0.1 - адрес машины в локальной сети. 69.28.151.162.27010 - похоже на адрес и порт сервера КС. ipfw я открыл - всё же UDP он у меня рубит по-умолчанию. Что посоветуете? Вставить ник Quote
Raul Posted April 27, 2006 Posted April 27, 2006 Например на внутреннем иф я вижу:10.0.0.1.2615 > 69.28.151.162.27010: udp 9 На внешнем: 10.0.0.1.gdp-port > 69.28.151.162.27010 udp 29 Так получается, что UDP-пакеты не "натятся" у тебя сейчас. Ты наверное до дивертов файрволом открыл UDP-трафик? Вставить ник Quote
Saenara Posted April 27, 2006 Posted April 27, 2006 Посоветую посмотреть, а не пытается ли он еще к каким серверам обратиться? И не только по удп. И есть ли пакеты, которые были куда-то отправлены и не было ответов. Вставить ник Quote
Kucher2 Posted April 27, 2006 Author Posted April 27, 2006 Raul, :) Ну да. Что я уже только не делал. Пробовал ещё делать: natd -v -redirect_port udp 10.0.0.1:1000-4500 1000-4500 как мне посоветовали, но система пишет в ответ: aliasing address not given Т.е. пытаюсь сделать проброс портов, но не получается почему-то. Понимаю, что чайник, но просто нет времени и сил изучать всё подряд - от винды до линукса и при этом ещё заниматься сеткой. :( Вставить ник Quote
Saenara Posted April 27, 2006 Posted April 27, 2006 natd -v -redirect_port udp 10.0.0.1:1000-4500 1000-4500 man natd (natd -n, например) Для контры, по крайней мере, прокидывать порты не надо. А НАТ у тебя, похоже, точно не делается, если 10.0.0.1 на внешнем интерфейсе появляется. Вставить ник Quote
Kucher2 Posted April 27, 2006 Author Posted April 27, 2006 Saenara, -Для контры, по крайней мере, прокидывать порты не надо. Достаточно просто их открыть? - А НАТ у тебя, похоже, точно не делается, если 10.0.0.1 на внешнем интерфейсе появляется. Уже не появляется. Но всё равно не работает. Гляньте плиз профессиональным взором. Мне кажется я в правилах ipfw напутал (на сервере стоит биллинг Старгейзер): #!/bin/sh fwcmd="/sbin/ipfw" natdcmd="/sbin/natd" int_if="rl0" #erv_if="xl1" ext_if="rl1" ${fwcmd} -f flush ipfw add 5 allow udp from any 123 to any 123 # согласование времени по ntp ipfw add 10 fwd 127.0.0.1,3128 tcp from 10.0.0.0/24 to any 80 out xmit rl1 # заворачиваем http на squid ${fwcmd} add 50 divert natd ip from any to <внешний ip сервера> # заворачиваем всё снаружи на НАТ ${fwcmd} add 55 deny log icmp from any to any frag ${fwcmd} add 60 allow icmp from any to any ${fwcmd} add 100 allow ip from any to any via lo0 # !!!!! Зачем это надо не понятно: без него работает так же. ${fwcmd} add 200 deny log ip from any to 127.0.0.0/8 ${fwcmd} add 250 deny log ip from 127.0.0.0/8 to any ${fwcmd} add 00305 deny log ip from any to 10.0.0.0/24 out via ${ext_if} # Это для СТГ ${fwcmd} add 00308 allow udp from any to 10.0.0.0/24 8888 via ${int_if} ${fwcmd} add 00309 allow udp from 10.0.0.0/24 to any via ${int_if} # Это для СТГ ${fwcmd} add 00314 allow tcp from 10.0.0.10 5555 to 10.0.0.1 via ${int_if} ${fwcmd} add 00315 allow tcp from 10.0.0.1 to 10.0.0.10 5555 via ${int_if} #Разрешающее правило для моего ПК ${fwcmd} add 29000 divert natd ip from 10.0.0.1 to any ${fwcmd} add 29001 allow ip from 10.0.0.1 to any ${fwcmd} add 29002 allow ip from any to 10.0.0.1 ${fwcmd} add 50020 deny log ip from 10.0.0.0/24 to 10.0.0.10 via ${int_if} ${fwcmd} add 50021 deny log ip from 192.168.10.0/24 to 192.168.20.1 via ${int_if} ${fwcmd} add 50022 deny log ip from 192.168.10.0/24 to 192.168.30.1 via ${int_if} ${fwcmd} add 50024 divert natd all from any to any via ${ext_if} ${fwcmd} add 50029 allow tcp from any to any out via ${ext_if} setup ${fwcmd} add 50030 allow tcp from any to any via ${ext_if} established ${fwcmd} add 50031 allow udp from any to any out via ${ext_if} ${fwcmd} add 50032 allow udp from any 53 to any in via ${ext_if} #${fwcmd} add 50033 allow tcp from any to 192.168.30.1 22 via ${ext_if} $fwcmd add 65534 deny log ip from any to any Вставить ник Quote
Raul Posted April 27, 2006 Posted April 27, 2006 ${fwcmd} add 50032 allow udp from any 53 to any in via ${ext_if} Временно измени на : ${fwcmd} add 50032 allow udp from any to any in recv ${ext_if} После того, как все заработает, хорошенько обдумав и прочитав руководство по ipfw исправишь, сделаешь "как положено". Вставить ник Quote
Kucher2 Posted April 27, 2006 Author Posted April 27, 2006 Raul, Большое спасибо. Действительно всё заработало. Чёрт, а ведь конфиг этот взят отсюда: http://stg.dp.ua/doc20/conf_example_freebsd.html Я даже не менял его, полагая, что там всё правильно. :( Спасибо ещё раз. :) Буду разбираться что означало это правило. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.