URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 72887
[ Назад ]

Исходное сообщение
"Linux iptables -> FreeBSD ipfw"

Отправлено siegerstein , 15-Мрт-07 18:49 
Был Линух с iptables, и делал следуешее:

iptables -t nat -A PREROUTING --dst xxx.xx.xxx.xxx -p tcp --dport 3333 -j DNAT --to-destination 192.168.0.1:3333
iptables -t nat -A POSTROUTING -p tcp --dst 192.168.0.1 --dport 3333 -j SNAT --to-source 192.168.0.254

Это прокидка внутренегог компа на внешнею сеть.

Поставили Фри :)

Как это замутить на ipwf?

P.S. тема сложная...


Содержание

Сообщения в этом обсуждении
"Linux iptables -> FreeBSD ipfw"
Отправлено vvvua , 16-Мрт-07 00:04 

>P.S. тема сложная...
нифига не сложная.
Поставь xinetd и не парься
в конфиге создай:

service my_serv
{
    socket_type = stream
    wait = no
    user = root
    redirect = 192.168.0.1 3333
}

в /etc/services добавь
my_serv           3333/tcp


А делаеться это в ipfw c помощью правила forward. Но это изврат - нужно через ipnat.


"Linux iptables -> FreeBSD ipfw"
Отправлено siegerstein , 16-Мрт-07 19:05 
>
>>P.S. тема сложная...
>нифига не сложная.
>Поставь xinetd и не парься
>в конфиге создай:
>
>service my_serv
>{
>    socket_type = stream
>    wait = no
>    user = root
>    redirect = 192.168.0.1 3333
>}
>
>в /etc/services добавь
>my_serv           3333/tcp
>
>
>
>А делаеться это в ipfw c помощью правила forward. Но это изврат
>- нужно через ipnat.

Спасибо за ответ.
Но поднимать демона ради одного телодвижения, как то не хорошо.

Очень прошу, если знаеш как сделать через ipfw, пожалуйста скажи.
Но очень нужно!

Зарание спасибо.


"Linux iptables -> FreeBSD ipfw"
Отправлено Vanya , 17-Мрт-07 12:07 
Вот пример переброски порта для пользования "ослом".
Может поможет

# more /etc/rc.conf | grep natd
natd_enable="YES"
natd_interface="fxp0"
natd_flags="-f /etc/natd.conf"


# ee /etc/natd.conf

dynamic yes
unregistered_only yes
use_sockets yes
same_ports yes
redirect_port tcp 192.168.0.1:4662 0.0.0.0:4662
redirect_port udp 192.168.0.1:4672 0.0.0.0:4672


"Linux iptables -> FreeBSD ipfw"
Отправлено vvvua , 18-Мрт-07 02:36 
Через ipfw много телодвижений.
Там цепочка должна быть
редирект-нат
По памяти - не помню. У меня сделано через ipnat:
rdr rl1 REALIP/32 port 3333 -> 192.168.0.1 port 3333 tcp

Прописано в /etc/ipnat.conf
Запуск -
ipnat -FC -f /etc/ipnat.conf


"Linux iptables -> FreeBSD ipfw"
Отправлено siegerstein , 18-Мрт-07 22:56 
>Через ipfw много телодвижений.
>Там цепочка должна быть
>редирект-нат
>По памяти - не помню. У меня сделано через ipnat:
>rdr rl1 REALIP/32 port 3333 -> 192.168.0.1 port 3333 tcp
>
>Прописано в /etc/ipnat.conf
>Запуск -
>ipnat -FC -f /etc/ipnat.conf

Спасибо ребята, работает!

Большое спасибо всем за помощь и быстрое реагирование! Тема закрыта.


"Linux iptables -> FreeBSD ipfw"
Отправлено siegerstein , 19-Мрт-07 14:09 
>>Через ipfw много телодвижений.
>>Там цепочка должна быть
>>редирект-нат
>>По памяти - не помню. У меня сделано через ipnat:
>>rdr rl1 REALIP/32 port 3333 -> 192.168.0.1 port 3333 tcp
>>
>>Прописано в /etc/ipnat.conf
>>Запуск -
>>ipnat -FC -f /etc/ipnat.conf
>
>Спасибо ребята, работает!
>
>Большое спасибо всем за помощь и быстрое реагирование! Тема закрыта.


Извеняюсь что поспешил.
У меня действительно заработало в дома, еогда я прокидовал с одного интерфейса на другой, но все они физически были на одной машине.

А вот пришел на работу, и не выходит. Мне надо прокинуть с одного интерфейса на другой, причем этот другой на другой машине.

Если прокидовать на ту же машину - все ok, если на другую - не катит.

xxx.xx.xxx.xx - это внешний интерфейс
192.168.0.1 - это внутрений на той же машине
192.168.0.251 - это на который надо прокинуть пакеты (другая машина)

rl0 - внутрений
rl1 - внешний

map rl1 192.168.0.1/24 -> 0/32 proxy port ftp ftp/tcp
map rl1 192.168.0.1/24 -> 0/32 portmap tcp/udp 10000:50000
map rl1 192.168.0.1/24 -> 0/32
rdr rl1 0.0.0.0/0 port 4899 -> 192.168.0.1 port 22 tcp

Так катит.

А если вот так:

map rl1 192.168.0.1/24 -> 0/32 proxy port ftp ftp/tcp
map rl1 192.168.0.1/24 -> 0/32 portmap tcp/udp 10000:50000
map rl1 192.168.0.1/24 -> 0/32
rdr rl1 0.0.0.0/0 port 4899 -> 192.168.0.251 port 22 tcp

то не катит.

Operation timed out
====
net.inet.ip.check_interface=1
net.inet.ip.forwarding=1
===
Что не так?


"Linux iptables -> FreeBSD ipfw"
Отправлено siegerstein , 20-Мрт-07 20:46 
>>>Через ipfw много телодвижений.
>>>Там цепочка должна быть
>>>редирект-нат
>>>По памяти - не помню. У меня сделано через ipnat:
>>>rdr rl1 REALIP/32 port 3333 -> 192.168.0.1 port 3333 tcp
>>>
>>>Прописано в /etc/ipnat.conf
>>>Запуск -
>>>ipnat -FC -f /etc/ipnat.conf
>>
>>Спасибо ребята, работает!
>>
>>Большое спасибо всем за помощь и быстрое реагирование! Тема закрыта.
>
>
>Извеняюсь что поспешил.
>У меня действительно заработало в дома, еогда я прокидовал с одного интерфейса
>на другой, но все они физически были на одной машине.
>
>А вот пришел на работу, и не выходит. Мне надо прокинуть с
>одного интерфейса на другой, причем этот другой на другой машине.
>
>Если прокидовать на ту же машину - все ok, если на другую
>- не катит.
>
>xxx.xx.xxx.xx - это внешний интерфейс
>192.168.0.1 - это внутрений на той же машине
>192.168.0.251 - это на который надо прокинуть пакеты (другая машина)
>
>rl0 - внутрений
>rl1 - внешний
>
>map rl1 192.168.0.1/24 -> 0/32 proxy port ftp ftp/tcp
>map rl1 192.168.0.1/24 -> 0/32 portmap tcp/udp 10000:50000
>map rl1 192.168.0.1/24 -> 0/32
>rdr rl1 0.0.0.0/0 port 4899 -> 192.168.0.1 port 22 tcp
>
>Так катит.
>
>А если вот так:
>
>map rl1 192.168.0.1/24 -> 0/32 proxy port ftp ftp/tcp
>map rl1 192.168.0.1/24 -> 0/32 portmap tcp/udp 10000:50000
>map rl1 192.168.0.1/24 -> 0/32
>rdr rl1 0.0.0.0/0 port 4899 -> 192.168.0.251 port 22 tcp
>
>то не катит.
>
>Operation timed out
>====
>net.inet.ip.check_interface=1
>net.inet.ip.forwarding=1
>===
>Что не так?

Кто то может помочь?


"Linux iptables -> FreeBSD ipfw"
Отправлено vvvua , 24-Мрт-07 03:23 
rdr rl1 xxx.xx.xxx.xx/32 port 4899 -> 192.168.0.251 port 22 tcp
map rl0 0.0.0.0/0 -> 0.0.0.0/32
map rl1 from 192.168.0.0/24 to any -> xxx.xx.xxx.xx/32

"Linux iptables -> FreeBSD ipfw"
Отправлено siegerstein , 25-Мрт-07 07:36 
>rdr rl1 xxx.xx.xxx.xx/32 port 4899 -> 192.168.0.251 port 22 tcp
>map rl0 0.0.0.0/0 -> 0.0.0.0/32
>map rl1 from 192.168.0.0/24 to any -> xxx.xx.xxx.xx/32


Короче понял в чем были траблы:

Ту машину на которую делаете прокидку портов, или вообще пускаете в нет должен ОБЯЗАТЕЛЬНО стоять шлюз на ту машину, которая этот нет раздает (на шлюз)

Это объясняется следующий: она получает пакет из нета, проходить через шлюз, а потом отправляется обратно - в нет. Поэтому должен быть прописан шлюз.

Пакет натиться и выпускается в нет...


"Linux iptables -> FreeBSD ipfw"
Отправлено Kolesya , 27-Мрт-07 21:07 
>>rdr rl1 xxx.xx.xxx.xx/32 port 4899 -> 192.168.0.251 port 22 tcp
>>map rl0 0.0.0.0/0 -> 0.0.0.0/32
>>map rl1 from 192.168.0.0/24 to any -> xxx.xx.xxx.xx/32
>
>
>Короче понял в чем были траблы:
>
>Ту машину на которую делаете прокидку портов, или вообще пускаете в нет
>должен ОБЯЗАТЕЛЬНО стоять шлюз на ту машину, которая этот нет раздает
>(на шлюз)
>
>Это объясняется следующий: она получает пакет из нета, проходить через шлюз, а
>потом отправляется обратно - в нет. Поэтому должен быть прописан шлюз.
>
>
>Пакет натиться и выпускается в нет...

Немного не так,
должен быть известен маршрут к отправителю пакета, но шлюз по дефолту НЕ ОБЯЗАТЕЛЬНО.
на ipfw  делается примерно так:
# cat /etc/natd.conf
port 8668
same_ports yes
use_sockets yes
redirect_port   tcp 10.10.10.10:1111-1112 1111-1112
======================================================
# ipfw show | grep 10.10.10.10
divert 8668 ip from 10.10.10.10 to any out xmit rl0
allow ip from any to 10.10.10.10 dst-port 1111-1112 in recv rl0
======================================================
# cat /etc/rc.conf | grep natd
natd_enable="YES"
natd_interface="rl0"
natd_flags="-f /etc/natd.conf"
======================================================
rl0           внешний интерфейс
10.10.10.10   внутренний IP который на который транслируются пакеты с наружи



"Linux iptables -> FreeBSD ipfw"
Отправлено siegerstein , 28-Мрт-07 16:22 
>>>rdr rl1 xxx.xx.xxx.xx/32 port 4899 -> 192.168.0.251 port 22 tcp
>>>map rl0 0.0.0.0/0 -> 0.0.0.0/32
>>>map rl1 from 192.168.0.0/24 to any -> xxx.xx.xxx.xx/32
>>
>>
>>Короче понял в чем были траблы:
>>
>>Ту машину на которую делаете прокидку портов, или вообще пускаете в нет
>>должен ОБЯЗАТЕЛЬНО стоять шлюз на ту машину, которая этот нет раздает
>>(на шлюз)
>>
>>Это объясняется следующий: она получает пакет из нета, проходить через шлюз, а
>>потом отправляется обратно - в нет. Поэтому должен быть прописан шлюз.
>>
>>
>>Пакет натиться и выпускается в нет...
>
>Немного не так,
>должен быть известен маршрут к отправителю пакета, но шлюз по дефолту НЕ
>ОБЯЗАТЕЛЬНО.
>на ipfw  делается примерно так:
># cat /etc/natd.conf
>port 8668
>same_ports yes
>use_sockets yes
>redirect_port   tcp 10.10.10.10:1111-1112 1111-1112
>======================================================
># ipfw show | grep 10.10.10.10
>divert 8668 ip from 10.10.10.10 to any out xmit rl0
>allow ip from any to 10.10.10.10 dst-port 1111-1112 in recv rl0
>======================================================
># cat /etc/rc.conf | grep natd
>natd_enable="YES"
>natd_interface="rl0"
>natd_flags="-f /etc/natd.conf"
>======================================================
>rl0           внешний
>интерфейс
>10.10.10.10   внутренний IP который на который транслируются пакеты с наружи
>

Знаю что на natd легко делаеться...

Просто уже замутитл на ipnat. Хоть он и не очень гибкий, но ресурсов есть на много меньше нежели natd.



"Linux iptables -> FreeBSD ipfw"
Отправлено vvvua , 29-Мрт-07 21:50 
я думал, что раз сервак - роутер в инет, то и дефолт на него...

"Linux iptables -> FreeBSD ipfw"
Отправлено E_Vorobyov , 28-Мрт-07 15:36 
>Был Линух с iptables, и делал следуешее:
>
>iptables -t nat -A PREROUTING --dst xxx.xx.xxx.xxx -p tcp --dport 3333 -j
>DNAT --to-destination 192.168.0.1:3333
>iptables -t nat -A POSTROUTING -p tcp --dst 192.168.0.1 --dport 3333 -j
>SNAT --to-source 192.168.0.254
>
>Это прокидка внутренегог компа на внешнею сеть.
>
>Поставили Фри :)
>
>Как это замутить на ipwf?
>
>P.S. тема сложная...

можно еще таким путем пойти:
cd /usr/ports/net/redir && make install
далее после успешной установки делаей следующее
redir --laddr=xxx.xxx.xxx.xxx --lport=3333 --caddr=192.168.0.1 --cport=3333&
и все что будет идти на ххх.ххх.ххх.ххх будет переброшено на твой внутренний ИП. Только есть один минус - все запросы на 192,168,0,1 будут приходить от машины где запущен редир, а не из всего мира. :(

ЗЫ: не забудь в правилах ipfw прописать разрешение для этих портов, адресов и интерфейсов...
ЗЫЫ: для автоматического запуска редиректа пропиши эту кманду в /etc/rc.local только укажы полный путь к бинарнику, типа
/usr/local/bin/redir --laddr=xxx.xxx.xxx.xxx --lport=3333 --caddr=192.168.0.1 --cport=3333&
!!!ВНИМАНИЕ, тут не забудь поставить в конце строки символ &, иначе поимеешь некоторые проблемы. :)


"Linux iptables -> FreeBSD ipfw"
Отправлено S1ash , 12-Июн-07 00:50 
Господа, подскажите как
iptables -t nat -A PREROUTING -p tcp --destination-port 5190 -j REDIRECT --to-ports 16667

в ipfw будет выгляденть