Страница 1 из 1

Помогите сделать гейт

Добавлено: 2009-12-21 17:37:34
Fogel
Не знаю, какими средствами воспользоваться, что бы реализовать следующую вещь:
Имеется локальная сеть с выходом в инет через виндовую проксю. В этой же локальной сети находится машина под FreeBSD, использующая тот же выход в инет, но без прокси. Цель - прописать на bsd машине гейт для одного из компьютеров, в настоящее время находящегося за прокси.

Боюсь, не совсем понятно объяснил :oops:

Сеть 192.168.0.x/24
Прокси 192.168.0.10 (под Win)
FreeBSD (7.2) 192.168.0.200 (одна сетевая, возможности установить вторую и прокладывать кабель, что бы юзать стандартную маршрутизацию нет)
WS 192.168.0.155 - рабочая станция под виндой, которой нужно предоставить выход в инет через машину с FreeBSD

Заранее благодарен.

Re: Помогите сделать гейт

Добавлено: 2009-12-21 17:51:13
schizoid
на фре поднять НАТ и на виндовой машине сделать шлюз по-умолчанию фрю?

Re: Помогите сделать гейт

Добавлено: 2009-12-21 18:07:00
Fogel
Да, фрибсд должна быть шлюзом для виндовой машины. Как реализовать NAT с учетом того, что у меня один интерфейс, что использовать, примерные настройки?

Re: Помогите сделать гейт

Добавлено: 2009-12-21 18:55:48
schizoid
на вскидку
в /etc/ipnat.rules

Код: Выделить всё

map rl0 192.168.10.32/32 -> 0.0.0.0/32
где rl0 - интерфейс
192.168.10.32 - Ип, который нуно натить

ну и старт
в rc.conf

Код: Выделить всё

ipnat_enable="YES"
ipnat_program="/sbin/ipnat"
ipnat_rules="/etc/ipnat.rules"
ipnat_flags="-v"

Код: Выделить всё

/etc/rc.d/ipnat start
но хз, заработает или нет :)

Re: Помогите сделать гейт

Добавлено: 2009-12-21 20:31:30
GRooVE
на мой взгляд, красивее, конечно, было бы сделать организовать дополнительный туннель компьютер<=>компьютер
ну а если... так... "по-быстрому", то тогда способом, который описал уважаемый schizoid постом ранее
от себя добавлю:
в случае использования ipfw_nat, правила будут иметь следующий вид, например:

Код: Выделить всё

intf="rl0"
ws="192.168.0.155"

ipfw nat 1 config if ${intf}
ipfw add nat 1 all from not ${ws} to any in via ${intf}
ipfw add nat 1 all from any to not ${ws} out via ${intf}
ipfw add allow all from ${ws} to any in via ${intf} keep-state
ipfw add allow all from me to any
ipfw add deny all from any to any

Re: Помогите сделать гейт

Добавлено: 2009-12-21 20:35:35
Fogel
schizoid
GRooVE
Спасибо. Завтра попробую и отпишусь.

Re: Помогите сделать гейт

Добавлено: 2009-12-22 10:39:06
schizoid
2 GRooVE, я в начале тоже думал написать, что можно ВПН-сервер поднять и т.д. и т.п., но ради одного хоста так замарачиваться ... :)

Re: Помогите сделать гейт

Добавлено: 2009-12-22 10:49:43
GRooVE
Согласен :)
Просто если чисто эстетически, то это равносильно, что есть и, звините за выражение, ср*ть через одно и то же место...
Хотя если никто никогда этого не увидит, то можно и так....
:)

Re: Помогите сделать гейт

Добавлено: 2009-12-22 10:53:42
Hunta
у меня временно работает сл. схема, почему временно, в планах отказаться от виндового гейта, пока все это тестится.
win машина - прокся, с двумя сетевухами, одна смотрит в локалку, другая в adsl.
freebsd машина - сквид, самс, одна сетевуха.
Клиенты которых надо ограничивать по времени и трафику пускаю через freebsd, остальных через win гейт.
есть одна загвоздка, не могу понять как настроить NAT на freebsd с одной сетевухой. Надо чтоб клиенты ещё забирали почту, НО к примеру прописываем проксю (freebsd) в IE, то эти же настройки и оутлуке. как пробросить порты (25, 110) на Freebsd????
и ещё вопрос по правилам ipfw

Код: Выделить всё

ipfw nat 1 config if ${intf}
ipfw add nat 1 all from not ${ws} to any in via ${intf}
ipfw add nat 1 all from any to not ${ws} out via ${intf}
почему

Код: Выделить всё

add nat 1
, в некоторых руковдствах вижу

Код: Выделить всё

add natd
, NAT 1 или NATD это имя какой то переменной? Где она задается?
Понимаю схема перегружена и не блещет, но осталось вот решить проблему проброса портов и можно полностью переходить на проксю на freebsd :crazy:

Re: Помогите сделать гейт

Добавлено: 2009-12-22 11:16:39
GRooVE
Так Вам nat нужен или прокси?
NAT 1 или NATD это имя какой то переменной? Где она задается?
Это один и тот же нат
Только ранее он работал как демон natd
А, начиная с 7-й FreeBSD, его можно вкомпилить в ядро таким образом:

Код: Выделить всё

options      IPFIREWALL_NAT

Re: Помогите сделать гейт

Добавлено: 2009-12-22 11:26:34
Hunta
Мне надо для вэба прокся, а для почты и ещё нескольких прог, пробрасывать порты.
Прокся работает, но вот с почтой косяк. Просто недопонимаю, прописываю в IE прокси (freebsd), и порт 3128, а аутлук же тоже долбится, я так понимаю на порт который прописан в IE. или нет? А там squid сидит :crazy:
А я разве не могу использовать и прокси и нат?

Re: Помогите сделать гейт

Добавлено: 2009-12-22 11:46:08
GRooVE
Hunta писал(а):Мне надо для вэба прокся, а для почты и ещё нескольких прог, пробрасывать порты.
Прокся работает, но вот с почтой косяк. Просто недопонимаю, прописываю в IE прокси (freebsd), и порт 3128, а аутлук же тоже долбится, я так понимаю на порт который прописан в IE. или нет? А там squid сидит :crazy:
А я разве не могу использовать и прокси и нат?
Не совсем понял задачу
"Проброс портов" в Вашем понимании нат?
Объясните нормально, например:
веб через свкид
почта, ася и т.п. через нат
остальное блочить

Re: Помогите сделать гейт

Добавлено: 2009-12-22 11:54:18
schizoid
переползите в другую тему, ибо эта тема не об этом.

Re: Помогите сделать гейт

Добавлено: 2009-12-22 12:05:27
Hunta
Ткните пожалуйста в какую тему, переползем конечно.
web - squid
icq, smtp,pop3, эл.отчетность (бух) - через нат
ну да, я имею ввиду проброс портов это NAT, есть ещё варианты? буду благодарен за предложенные варианты....

Re: Помогите сделать гейт

Добавлено: 2009-12-22 13:10:42
skeletor
Проброс портов можно делать не только через NAT. Как пример redir.

Re: Помогите сделать гейт

Добавлено: 2009-12-22 13:32:21
schizoid
создаете новую тему и там обсуждаете проблему.
тут просто заведено: один вопрос - одна тема.
так что создавайте, я потом перенесу сообщения.

Re: Помогите сделать гейт

Добавлено: 2009-12-22 15:45:34
Hunta
все создал, переползаем на
http://forum.lissyara.su/viewtopic.php?f=8&t=22861

Re: Помогите сделать гейт

Добавлено: 2009-12-22 17:14:32
Fogel
Не получается что-то.

Код: Выделить всё

ifconfig rl0
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=8<VLAN_MTU>
        ether 00:80:48:1a:77:e4
        inet 192.168.0.200 netmask 0xffffff00 broadcast 192.168.1.255
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
/etc/ipnat.rules

Код: Выделить всё

intf="rl0"
ws="192.168.0.155"
map rl0 192.168.0.155/24 -> 0.0.0.0/24
ipfw nat 1 config if ${intf}
ipfw add nat 1 all from not ${ws} to any in via ${intf}
ipfw add nat 1 all from any to not ${ws} out via ${intf}
ipfw add allow all from ${ws} to any in via ${intf} keep-state
ipfw add allow all from me to any
ipfw add deny all from any to any

Код: Выделить всё

root .//etc >>/etc/rc.d/ipnat start
Installing NAT rules.
0 entries flushed from NAT table
0 entries flushed from NAT list
syntax error error at "ws", line 3
Пробовал закомментировать #ws и #map

Код: Выделить всё

root .//etc >>/etc/rc.d/ipnat start
Installing NAT rules.
0 entries flushed from NAT table
0 entries flushed from NAT list
syntax error error at "ipfw", line 6
что-то не установлено?

Re: Помогите сделать гейт

Добавлено: 2009-12-22 19:27:55
GRooVE
вы правила для ipfw загружаете в ipnat, а это два разных фаервола
для ipfw необходимо:
в ядро:

Код: Выделить всё

options      IPFIREWALL
options      IPFIREWALL_NAT
в rc.conf

Код: Выделить всё

firewall_enable="YES"
firewall_script="/usr/local/etc/ipfw.sh"

Код: Выделить всё

# cat /usr/local/etc/ipfw.sh
fwcmd="/sbin/ipfw"

${fwcmd} -f flush
${fwcmd} -f pipe flush
${fwcmd} -f queue flush

intf="rl0"
ws="192.168.0.155/32"

${fwcmd} allow ip from any to any via lo0
${fwcmd} deny ip from any ot 127.0.0.0/8
${fwcmd} deny ip from 127.0.0.0/8 to any
${fwcmd} nat 1 config if ${intf}
${fwcmd} add nat 1 all from not ${ws} to any in via ${intf}
${fwcmd} add nat 1 all from any to not ${ws} out via ${intf}
${fwcmd} add allow all from ${ws} to any in via ${intf} keep-state
${fwcmd} add allow all from me to any
${fwcmd} add deny all from any to any

Re: Помогите сделать гейт

Добавлено: 2009-12-22 21:15:06
Fogel
Да, кажется, я данные опции при сборке ядра не включал.
Опять-таки, отпишусь завтра. Извините за задержку.