The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"iptables warcraft 3 the frozen throne"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Открытые системы на сервере (Маршрутизация, NAT / Linux)
Изначальное сообщение [ Отслеживать ]

"iptables warcraft 3 the frozen throne"  +/
Сообщение от awpe (ok) on 12-Май-10, 19:09 
Доброго времени суток.

имею:

     сервер свич локальные машины

     внешка -> сервер -> свич -> локальные машины

/etc/iptables/iptables.rules:

*nat
-A POSTROUTING -o eth1 -j MASQUERADE
-A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
-A PREROUTING -p tcp --dport 6112 -i eth1 -j DNAT --to-destination 192.168.0.2:6112
COMMIT
*filter
-A FORWARD -p tcp -m tcp -m multiport --dports 6112:6119,6500,6886 -i eth0 -j ACCEPT
-A FORWARD -p udp -m udp -m multiport --dports 6112:6119 -i eth0 -j ACCEPT
COMMIT

собственно вопрос как сделать так чтобы порт 6112 перенаправлялся из внешки в локальную сеть именно той машине с которой был запрос

суть в чём - локальная сеть в варкрафте работает нормально, а вот с bnet трабл - если убрать все правила по портам 6112-6119 тоесть оставить

*nat
-A POSTROUTING -o eth1 -j MASQUERADE
-A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
COMMIT
*filter
COMMIT

вот так, то с двух машин локальной сети можно подцепится к любой игре на bnet но при этом никто из локальной сети не может быть хостом.

Если добавить правила

*nat
-A POSTROUTING -o eth1 -j MASQUERADE
-A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
-A PREROUTING -p tcp --dport 6112 -i eth1 -j DNAT --to-destination 192.168.0.2:6112
COMMIT
*filter
-A FORWARD -p tcp -m tcp -m multiport --dports 6112:6119,6500,6886 -i eth0 -j ACCEPT
-A FORWARD -p udp -m udp -m multiport --dports 6112:6119 -i eth0 -j ACCEPT
COMMIT

то машина с ip 192.168.0.2 может хостить НО подцепится к ней могут только из внешки, остальные машины локальной сети игру видят но не могут после чтения man'а решил попоробовать так

*nat
-A POSTROUTING -o eth1 -j MASQUERADE
-A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
-A PREROUTING -p tcp --dport 6112 -i eth1 -j DNAT --to-destination 192.168.0.0-192.168.0.199:6112
COMMIT
*filter
-A FORWARD -p tcp -m tcp -m multiport --dports 6112:6119,6500,6886 -i eth0 -j ACCEPT
-A FORWARD -p udp -m udp -m multiport --dports 6112:6119 -i eth0 -j ACCEPT
COMMIT

но в результате bnet вообще пропал, вопрос как сделать чтобы к созданой на локальной машине игре по bnet, могли цеплятся не только из внешки но и из локальной сети?

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "iptables warcraft 3 the frozen throne"  +/
Сообщение от reader (ok) on 12-Май-10, 20:46 
>[оверквотинг удален]
>3128
> -A PREROUTING -p tcp --dport 6112 -i eth1 -j DNAT --to-destination
>192.168.0.2:6112
> COMMIT
> *filter
> -A FORWARD -p tcp -m tcp -m multiport --dports 6112:6119,6500,6886 -i
>eth0 -j ACCEPT
> -A FORWARD -p udp -m udp -m multiport --dports 6112:6119 -i
>eth0 -j ACCEPT
> COMMIT

192.168.0.0 - это подсеть на eth0? сделайте и на нем SNAT для тех кто идет из 192.168.0.0 на эти порты

>[оверквотинг удален]
> *filter
> -A FORWARD -p tcp -m tcp -m multiport --dports 6112:6119,6500,6886 -i
>eth0 -j ACCEPT
> -A FORWARD -p udp -m udp -m multiport --dports 6112:6119 -i
>eth0 -j ACCEPT
> COMMIT
>
>но в результате bnet вообще пропал, вопрос как сделать чтобы к созданой
>на локальной машине игре по bnet, могли цеплятся не только из
>внешки но и из локальной сети?

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

2. "iptables warcraft 3 the frozen throne"  +/
Сообщение от reader (ok) on 12-Май-10, 20:55 
конечно если из локалки цепляются через внешний адрес
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

4. "iptables warcraft 3 the frozen throne"  +/
Сообщение от awpe (ok) on 12-Май-10, 22:31 
>конечно если из локалки цепляются через внешний адрес

тоесть ничего не получится?

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

3. "iptables warcraft 3 the frozen throne"  +/
Сообщение от awpe (ok) on 12-Май-10, 22:29 
192.168.0.0 - это подсеть на eth0?  - да

сделайте и на нем SNAT для тех кто идет из 192.168.0.0 на эти порты

-A POSTROUTING -o eth0 -s 192.168.0.0/24 -j SNAT --to-source eth1 - так?

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

5. "iptables warcraft 3 the frozen throne"  +/
Сообщение от reader (ok) on 13-Май-10, 00:01 
>192.168.0.0 - это подсеть на eth0?  - да
>
>сделайте и на нем SNAT для тех кто идет из 192.168.0.0 на
>эти порты
>
>-A POSTROUTING -o eth0 -s 192.168.0.0/24 -j SNAT --to-source eth1 - так?
>

-A POSTROUTING -o eth0 -s 192.168.0.0/24 -j SNAT --to-source eth0

и тут
-A PREROUTING -p tcp --dport 6112 -i eth1 -j DNAT --to-destination 192.168.0.2:6112
убрать -i eth1, если клиент будет цепляться через внешний ip

кстати , а клиент с какого порта отправляет не с 6112?

если клиент из локалки (192.168.0.0/24) цепляется к игровому серверу который в локалке (192.168.0.2) по ip 192.168.0.2, то это соединение пойдет на прямую, а не через шлюз и если это не работает смотрите игровой сервер.

если клиент из локалки (192.168.0.0/24) цепляется к игровому серверу который в локалке (192.168.0.2), через внешний ip шлюза (его внутренний допустим 192.168.0.1 ), то без nat на внутреннем интерфейсе получится прохождение пакета

клиент > шлюз (192.168.0.1) > перенаправление на 192.168.0.2 > ответ клиенту на прямую, не через шлюз(клиенту это не нравится)

с nat на eth0 , ответ от 192.168.0.2 пойдет через шлюз

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

6. "iptables warcraft 3 the frozen throne"  +/
Сообщение от awpe (ok) on 13-Май-10, 01:41 
*nat
-A POSTROUTING -o eth1 -j MASQUERADE
-A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
-A PREROUTING -p tcp --dport 6112 -i eth1 -j DNAT --to-destination 192.168.0.2:6112
COMMIT
*filter
-A FORWARD -p tcp -m tcp -m multiport --dports 6112:6119,6500,6886 -i eth0 -j ACCEPT
-A FORWARD -p udp -m udp -m multiport --dports 6112:6119 -i eth0 -j ACCEPT
COMMIT

когда игра идёт по локальной сети то пакеты не доходят до шлюза на то она и локальная игра, они через свич видимо сразу проходят. Проблемы с battle.net потому что это внешний сервер, когда один создаёт игру то для подключения извне нужно чтобы пакеты с порта 6112 заворачивались на машину хоста в локальной сети :

192.168.0.2 - ip адрес хоста в локальной сети
на шлюз приходит пакет (порт 6112) шлюз меняет ip его назначения с внешнего ip шлюза на 192.168.0.2 (согласно приведённым выше правилам), но когда клиент из локальной сети с ip адресом 192.168.0.3 хочет подключится к хосту, то пакет с ответом на его запрос снова заворачивается на 192.168.0.2, вопрос собственно в том как сделать так чтобы порт 6112 заворачивался именно на тот ip с которого был запрос или так не возможно? может можно пакеты из локальной сети с каким нибудь флагом на сервер отправлять? или может сделать правило такое чтобы все внешние пакеты 6112 отправлялись не на конкретный адрес в локальной сети а на всю сеть (кому надо тот и примет).

Боюсь я фигню написал ибо слабо представляю как iptables определит кому предназначался пакет...

Значит остаётся только завернуть порт 6112 на внутрисеть и пусть там принимает тот кому надо....

Если у кого то есть идеи сжальтесь над новичком, напишите как будет конфиг выглядеть.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

7. "iptables warcraft 3 the frozen throne"  +/
Сообщение от reader (ok) on 13-Май-10, 10:55 
>[оверквотинг удален]
>когда игра идёт по локальной сети то пакеты не доходят до шлюза
>на то она и локальная игра, они через свич видимо сразу
>проходят. Проблемы с battle.net потому что это внешний сервер, когда один
>создаёт игру то для подключения извне нужно чтобы пакеты с порта
>6112 заворачивались на машину хоста в локальной сети :
>
>192.168.0.2 - ip адрес хоста в локальной сети
>на шлюз приходит пакет (порт 6112) шлюз меняет ip его назначения с
>внешнего ip шлюза на 192.168.0.2 (согласно приведённым выше правилам), но когда
>клиент из локальной сети с ip адресом 192.168.0.3 хочет подключится к

на какой ip он подключается , на внешний с последующим перенапровлением ( хотя из-за -i eth1 перенаправления не будет ) или сразу на 192.168.0.2

>хосту, то пакет с ответом на его запрос снова заворачивается на

с ответом от 192.168.0.2 ? если да то он не будет заворачиваться потому что как минимум у них будет -i eth0

>192.168.0.2, вопрос собственно в том как сделать так чтобы порт 6112
>заворачивался именно на тот ip с которого был запрос или так

не понятно сформулированно, обратное преобразование iptables делает сам

клиент с какого порта отравляет?

>[оверквотинг удален]
>а на всю сеть (кому надо тот и примет).
>
>Боюсь я фигню написал ибо слабо представляю как iptables определит кому предназначался
>пакет...
>
>Значит остаётся только завернуть порт 6112 на внутрисеть и пусть там принимает
>тот кому надо....
>
>Если у кого то есть идеи сжальтесь над новичком, напишите как будет
>конфиг выглядеть.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

8. "iptables warcraft 3 the frozen throne"  +/
Сообщение от awpe (ok) on 14-Май-10, 01:51 
в том то и дело что все пакеты battle.net идут через его сервер а не по кротчайшему пути чем была бы локальная сеть

клиент отправляет с 6112 да и принимает от туда, просто в моих правилах ip входящих по порту 6112 пакетов с внешнего ip сервера playground меняется на *.0.2 а ведь в локальной сети могут быть ещё машины которым надо

надо видиммо сделать так чтобы каждая машина имела доступ по всем портам в обе стороны во внешку

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

9. "iptables warcraft 3 the frozen throne"  +/
Сообщение от reader (ok) on 14-Май-10, 11:23 
>[оверквотинг удален]
>сервер а не по кротчайшему пути чем была бы локальная сеть
>
>
>клиент отправляет с 6112 да и принимает от туда, просто в моих
>правилах ip входящих по порту 6112 пакетов с внешнего ip сервера
>playground меняется на *.0.2 а ведь в локальной сети могут быть
>ещё машины которым надо
>
>надо видиммо сделать так чтобы каждая машина имела доступ по всем портам
>в обе стороны во внешку

если сервер слушает 6112 и на него делается проброс с внешки, и клиент отравляет с 6112, и протокол они используют один и тот же, то по моему сделать то что вы хотите не получится.

смотрите можно ли у них менять порты.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру