1 (28-09-2009 09:57:22 отредактировано RimiX)

Тема: IPFW forwarding на другой хост по 80 порту

Судя по строке в мане ipfw в которую
все тычат, forwarding не заменяет адрес назначения, а как он тогда соббственно будет перенаправлять без модификации
пакета?
Есть freebsd mpd сервер доступа, который раздаёт туннели ng*.
Делаю редирект средствами ipfw на самом сервере. Опция IP_FIREWALL_FORWARD скомпилирована.
ng_ipfw.ko загружен.
Нужно например клиента с туннелем
pptp - 95.87.6.22 ng1 при попытке зайти на http перенаправить его на отдельный WEB сервер
http - 95.87.5.1 чтобы тот прочитал про причины "отлупа" (вирусы, баланс)

allow tcp from any to 95.87.5.1 80 out
allow tcp from 95.87.5.1 80 to any in
allow udp from any to any 53
allow udp from any 53 to any
fwd 95.87.5.1:80 log tcp from any to any 80 via ng1
deny all from any to any

проверяю с клиента:
telnet abc.ru 80
на сервере ловлю пакеты:

tcpdump -i ng1 port 80
IP 95.87.5.22.2595 > abc4.abc.ru.http: S 3510851316:3510851316(0) win 16384 <mss 1360,nop,nop,sackOK>

ну и соответственно на WEB сервере в дампе TCP тишина.
При этом в ipfw show прибавляется счётчик по правилу форвардинга и в логе security тоже соответвующее уведомление

vpn2 kernel: ipfw: 216 Forward to 95.87.5.1:80 TCP 95.87.5.22:
3036 188.162.216.140:80 in via ng1

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

2

Re: IPFW forwarding на другой хост по 80 порту

я не понял, а куда Вы форвардите ?
правило fwd 95.87.5.1:80 log tcp from any to any 80 via ng1
форвардит куда и откуда - не дописано.

смотрите man ipfw

     fwd | forward ipaddr | tablearg[,port]
             Change the next-hop on matching packets to ipaddr, which can be
             an IP address or a host name.  The next hop can also be supplied
             by the last table looked up for the packet by using the tablearg
             keyword instead of an explicit address.  The search terminates if
             this rule matches.
             If ipaddr is a local address, then matching packets will be for-
             warded to port (or the port number in the packet if one is not
             specified in the rule) on the local machine.
             If ipaddr is not a local address, then the port number (if speci-
             fied) is ignored, and the packet will be forwarded to the remote
             address, using the route as found in the local routing table for
             that IP.
             A fwd rule will not match layer-2 packets (those received on
             ether_input, ether_output, or bridged).
             The fwd action does not change the contents of the packet at all.
             In particular, the destination address remains unmodified, so
             packets forwarded to another system will usually be rejected by
             that system unless there is a matching rule on that system to
             capture them.  For packets forwarded locally, the local address
             of the socket will be set to the original destination address of
             the packet.  This makes the netstat(1) entry look rather weird
             but is intended for use with transparent proxy servers.
             To enable fwd a custom kernel needs to be compiled with the
             option options IPFIREWALL_FORWARD.

тоесть, fwd | forward ipaddr | tablearg[,port]
ошибка выходит в Вашем руле.

Добавлено: 25-09-2009 13:15:50

Вот выдернул из рабоего конфига

${fwcmd} add fwd 193.33.96.46,81 tcp from any to aucland.lt 80 keep-state
${fwcmd} add fwd 193.33.96.46,82 tcp from any to mirror.aucland.lt 80 keep-state

3

Re: IPFW forwarding на другой хост по 80 порту

Alexander пишет:

Вот выдернул из рабоего конфига

${fwcmd} add fwd 193.33.96.46,81 tcp from any to aucland.lt 80 keep-state
${fwcmd} add fwd 193.33.96.46,82 tcp from any to mirror.aucland.lt 80 keep-state

193.33.96.46 - это локальный IP? т.е. этой же тачки что и на которой IPFW работает?

Re: IPFW forwarding на другой хост по 80 порту

при обращении на порт 81 IP 193.33.96.46 происходит переброс/форвард на домен(IP всеж вернее было бы указать тут) на порт 80 aucland.lt
Что сложного? Читайте мануалы.

5

Re: IPFW forwarding на другой хост по 80 порту

Кручу-Верчу
по-моему будет правильно так: при обращении на aucland.lt порт 80 происходит форвард на 193.33.96.46 порт 81

6

Re: IPFW forwarding на другой хост по 80 порту

У меня то же самое. Мануал зачитал до дыр.
ipfw add 1001 fwd 192.168.5.11 ip from 10.111.10.0/24 to any
сч

Добавлено: 03-01-2010 22:55:21

У меня то же самое. Мануал зачитал до дыр.
ipfw add 1001 fwd 192.168.5.11 ip from 10.111.10.0/24 to any
счётчик увеличивается, а пакеты упорно идут по default gateway.

7

Re: IPFW forwarding на другой хост по 80 порту

наверно нужно поднять правило выше остальных, где проходят пакеты

8

Re: IPFW forwarding на другой хост по 80 порту

я когдато ковырял заворот на другой хост, остановился на том что fwd работвет только на localhost, для того чтобы перенаправить на другой адрес надо патчить...

Суть как я понял в том что пакет перенаправляется без изменений и именно поэтому отвергается другой системой. Я пользую для перенаправления natd. Еще помойму ipfw непонимает доменов, только ip адреса.

9

Re: IPFW forwarding на другой хост по 80 порту

portfwd еще можно прикрутить. Может подойдет

10

Re: IPFW forwarding на другой хост по 80 порту

Итак.
Благодаря опыту ошибок трудных, решил добить эту тему, которую когда-то открыл.
Весь косяк в этой теме заключался в том что пакеты уходили на дефолтный шлюз, а не на тот который указывался в
правиле ipfw fwd, поскольку для успешного перенаправления пакетов нужно чтобы хост переправитель и хост получатель были в одном домене. Т.е. форвард заключается в том что в пакете который попадает под правило форвардинга модифицируется только мак адрес назначения. В данном случае система просто не находилась в одном широковещательном домене ни по одному из сетевых интерфейсов и пакет, за неимением мак адреса форвард-таргета (хоста получателя), отправлялся по дефолту.