Не пойму в чем дело

FreeBSD, NetBSD, OpenBSD, DragonFly и т. д.

Модератор: arachnid

Аватара пользователя
Velik.84
Сообщения: 80
ОС: Archlinux

Не пойму в чем дело

Сообщение Velik.84 »

Стоит FreeBSD 6.2
1. Надо что бы клиент, который выходит через сервак с фри мог принимать и отправлять почту.
2. На серваке стоит squid и ipfw
3. fxp0 - картачка смотрящая в инет nve0 - смотрит в локалку
Вот правила фаирволла:

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

ipfw='/sbin/ipfw -q'
${ipfw} add fwd 192.168.1.222 tcp from any to any http in via nve0 # HTTP запросы пользователей попадают на компьютер с http прокси
${ipfw} add pass all from any to any
${ipfw} add fwd 127.0.0.1,3128 tcp from any to any http in via nve0 #HTTP запросы попадают в "лапы" прокси
${ipfw} add pass all from any to any

Что бы решить вопрос с приемом и отправкой почты с клиента в инет через сервак (с squid), какие надо дописать правила? Помогите пожалуйста?
З.Ы. в ipfw у меня написаны только эти правила. Я только учусь и прошу отнестись с пониманием :)
Спасибо сказали:
Аватара пользователя
Poor Fred
Сообщения: 1575
Статус: Pygoscelis papua
ОС: Gentoo Linux, FreeBSD

Re: Не пойму в чем дело

Сообщение Poor Fred »

Velik.84 писал(а):
10.10.2007 16:30
Стоит FreeBSD 6.2
${ipfw} add fwd 192.168.1.222 tcp from any to any http in via nve0 # HTTP запросы пользователей попадают на компьютер с http прокси
${ipfw} add pass all from any to any
${ipfw} add fwd 127.0.0.1,3128 tcp from any to any http in via nve0 #HTTP запросы попадают в "лапы" прокси
${ipfw} add pass all from any to any[code]

Squid, насколько я знаю, не умеет проксировать почту. В твоих правилах ты заворачиваешь только http-порты (80, 8080). Это в общем правильно, но когда идет обращение к другим портам, 25-му, 110-му? Относительно них правил нет, поэтому ipfw просто игнорирует эти запросы.
Когда у меня такая проблема возникла я недолго думая отправил обращение ко всем портам, кроме http-шных напрямую через NAT. Т.е. у меня вначале стоят такие правила:

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

# ipfw list
00100 fwd 192.168.1.1,3128 tcp from 192.168.1.0/24 to any dst-port 80,8080 via fxp0
...
00300 divert 8668 ip from any to any via fxp0

Насчет NAT смотри в хендбуке. Ну и разных примеров правил ipfw в сети полно. Подбери подходящее и поправь под себя.
Убить всех человеков!
Спасибо сказали:
Аватара пользователя
Velik.84
Сообщения: 80
ОС: Archlinux

Re: Не пойму в чем дело

Сообщение Velik.84 »

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

/usr/local/billing/rc.firewall
${ipfw} -f flush
${ipfw} add fwd 192.168.1.222 tcp from any to any http in via nve0
${ipfw} add pass all from any to any
${ipfw} add fwd 127.0.0.1,3128 tcp from any to any http in via nve0
${ipfw} add pass all from any to any
${ipfw} add fwd 192.168.1.2 tcp from any to any 5190 in via nve0
${ipfw} add pass  all from any to any
${ipfw} add divert natd all from any to any via fxp0
${ipfw} add allow all from any to any
${ipfw} add allow tcp from any to 192.168.1.222 110 via nve0 setup
${ipfw} add allow tcp from any to 192.168.1.222 20,21 in via nve0 setup
${ipfw} add allow tcp from any to 192.168.1.222 5190 in via nve0 setup
${ipfw} add allow tcp from any to 192.168.1.222 49152-65535 via nve0 setup


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

SKTV# cat /etc/rc.conf

    keymap="ru.koi8-r"
    linux_enable="YES"
    usbd_enable="YES"

    # -- sysinstall generated deltas -- # Sun Sep 30 16:08:45 2007
    ifconfig_nve0="inet 192.168.1.222  netmask 255.255.255.0"
    ifconfig_fxp0="inet 192.168.2.2 netmask 255.255.255.0"
    defaultrouter="192.168.2.1"
    firewall_enable="YES"
    firewall_script="/usr/local/billing/rc.wirewall"
    natd_enable="YES"
    natd_interface="fxp0"
    gateway_enable="YES"
    hostname="SKTV"
    squid_enable="YES"
    apache_enable="YES"
    mysql_enable="YES"


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

SKTV# ipfw -ad list
    00100    0      0 fwd 192.168.1.222 tcp from any to any dst-port 80 in via nve0
    00200 2416 774256 allow ip from any to any
    00300    0      0 fwd 127.0.0.1,3128 tcp from any to any dst-port 80 in via nve0
    00400    0      0 allow ip from any to any
    00500    0      0 fwd 192.168.1.2 tcp from any to any dst-port 5190 in via nve0
    00600    0      0 allow ip from any to any
    00700    0      0 allow tcp from any to 192.168.1.222 dst-port 110 via nve0 setup
    00800    0      0 allow tcp from any to 192.168.1.222 dst-port 20,21 in via nve0 setup
    00900    0      0 allow tcp from any to 192.168.1.222 dst-port 5190 in via nve0 setup
    01000    0      0 allow tcp from any to 192.168.1.222 dst-port 49152-65535 via nve0 setup
    65535  125   8487 deny ip from any to any

Поправте?
Спасибо сказали:
Аватара пользователя
Poor Fred
Сообщения: 1575
Статус: Pygoscelis papua
ОС: Gentoo Linux, FreeBSD

Re: Не пойму в чем дело

Сообщение Poor Fred »

Попробуй так:
${ipfw} add fwd 127.0.0.1,3128 tcp from any to any http via fxp0
${ipfw} add divert natd all from any to any via fxp0

В принципе, этого для самого начала достаточно будет. Тут надо понимать как работают правила. Проверка идет сверху вниз. Как только доходит до подходящего условия - все, стоп. А у тебя везде было понатыкано ${ipfw} add pass all from any to any, поэтому тут и останавливалось и ничего толком не делало. Да и с ним вообще весь брандмауэр теряет смысл.
Еще надо:

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

${ipfw} add allow all from any to any via lo0
${ipfw} add deny ip from any to 127.0.0.0/8
${ipfw} add deny ip from 127.0.0.0/8 to any

А потом уже прочие правила.

Если что так и не получается добавляй в правила директиву log типа

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

add allow log ...
add deny log ...

и просматривай /var/log/security, смотри какое правило не срабатывает и почему.
Убить всех человеков!
Спасибо сказали:
Аватара пользователя
Velik.84
Сообщения: 80
ОС: Archlinux

Re: Не пойму в чем дело

Сообщение Velik.84 »

По твоим словам у меня так должно быть? И боьше нечего? lo0 так и оставить?

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

${ipfw} add fwd 192.168.1.222 tcp from any to any http in via nve0
${ipfw} add fwd 127.0.0.1,3128 tcp from any to any http via fxp0
${ipfw} add divert natd all from any to any via fxp0
${ipfw} add allow all from any to any via lo0
${ipfw} add deny ip from any to 127.0.0.0/8
${ipfw} add deny ip from 127.0.0.0/8 to any


З.Ы. ps -aux | grep nat ничего не показывает
Спасибо сказали:
Аватара пользователя
Velik.84
Сообщения: 80
ОС: Archlinux

Re: Не пойму в чем дело

Сообщение Velik.84 »

с таким конфигом не работает инет и не пингуется локалка (((
Спасибо сказали:
Аватара пользователя
Velik.84
Сообщения: 80
ОС: Archlinux

Re: Не пойму в чем дело

Сообщение Velik.84 »

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

ps -xu | grep natd
root  1095  0.0  0.2  1352   912  ??  Is    1:36PM   0:00.00 /sbin/natd -m -u -
root  1100  0.0  0.1   372   252  p0  R+    1:36PM   0:00.00 grep natd


Ну так что в ipfw дописать?
Спасибо сказали:
Аватара пользователя
evil
Сообщения: 149

Re: Не пойму в чем дело

Сообщение evil »

Velik.84 писал(а):
11.10.2007 13:39

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

ps -xu | grep natd
root  1095  0.0  0.2  1352   912  ??  Is    1:36PM   0:00.00 /sbin/natd -m -u -
root  1100  0.0  0.1   372   252  p0  R+    1:36PM   0:00.00 grep natd


Ну так что в ipfw дописать?

Так демону natd надо указать на какой интерфейс натировать либо на какой ip адрес ежели на интерфейсе он не один...
Спасибо сказали:
Аватара пользователя
Velik.84
Сообщения: 80
ОС: Archlinux

Re: Не пойму в чем дело

Сообщение Velik.84 »

Все заработало. В конфиге поменял одну строчу (переместил в самый верх) и усе заработало..
Спасибо сказали:
Аватара пользователя
Poor Fred
Сообщения: 1575
Статус: Pygoscelis papua
ОС: Gentoo Linux, FreeBSD

Re: Не пойму в чем дело

Сообщение Poor Fred »

Velik.84 писал(а):
11.10.2007 11:28
${ipfw} add fwd 192.168.1.222 tcp from any to any http in via nve0

Эту строку выкини вообще.
Убить всех человеков!
Спасибо сказали:
Аватара пользователя
Velik.84
Сообщения: 80
ОС: Archlinux

Re: Не пойму в чем дело

Сообщение Velik.84 »

Poor Fred писал(а):
11.10.2007 16:29
Velik.84 писал(а):
11.10.2007 11:28
${ipfw} add fwd 192.168.1.222 tcp from any to any http in via nve0

Эту строку выкини вообще.

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

ipfw='/sbin/ipfw -q'


${ipfw} -f flush
${ipfw} add divert natd all from any to any via fxp0
${ipfw} add fwd 192.168.1.222 tcp from any to any http in via nve0
${ipfw} add pass all from any to any
${ipfw} add fwd 127.0.0.1,3128 tcp from any to any http in via nve0
${ipfw} add pass  all from any to any
${ipfw} add allow all from any to any

У меня такой работает
Спасибо сказали:
Аватара пользователя
Poor Fred
Сообщения: 1575
Статус: Pygoscelis papua
ОС: Gentoo Linux, FreeBSD

Re: Не пойму в чем дело

Сообщение Poor Fred »

Velik.84 писал(а):
12.10.2007 09:08
${ipfw} add divert natd all from any to any via fxp0
${ipfw} add fwd 192.168.1.222 tcp from any to any http in via nve0
${ipfw} add pass all from any to any
${ipfw} add fwd 127.0.0.1,3128 tcp from any to any http in via nve0
${ipfw} add pass all from any to any
${ipfw} add allow all from any to any
У меня такой работает

Разумеется работает. Только у тебя всё идет напрямую через NAT. До правила fwd дело просто не доходит. Вместо всех вышеприведенных строк оставь только две:
${ipfw} add fwd 127.0.0.1,3128 tcp from any to any http via fxp0
${ipfw} add divert natd all from any to any via fxp0
Убить всех человеков!
Спасибо сказали:
Аватара пользователя
Velik.84
Сообщения: 80
ОС: Archlinux

Re: Не пойму в чем дело

Сообщение Velik.84 »

мне же надо что бы 80 порт попадал на прокси. Вот так пойдет?

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

${ipfw} add fwd 192.168.1.222 tcp from any to any http in via nve0 # HTTP запросы пользователей попадают на компьютер с http прокси
${ipfw} add fwd 127.0.0.1,3128 tcp from any to any http in via nve0 #HTTP запросы попадают в "лапы" прокси
${ipfw} add divert natd all from any to any via fxp0


З.Ы. Короче. Мне надо что бы все урезалось кроме:
1. С локалки ходили в инет через прокси
2. Уходили и приходили pop и smtp
3. Разрешить Аську и фтп
Спасибо сказали:
Аватара пользователя
Poor Fred
Сообщения: 1575
Статус: Pygoscelis papua
ОС: Gentoo Linux, FreeBSD

Re: Не пойму в чем дело

Сообщение Poor Fred »

Velik.84 писал(а):
12.10.2007 13:06
Вот так пойдет?

Я уже написал как надо. Даже конкретные строки привел.
Убить всех человеков!
Спасибо сказали: