Jump to content
Калькуляторы

freebsd хитрый ipfw

Нужен совет гуру фряхи )

Можно ли каким то образом завернуть трафик с локального ИП на другой (в тойже подсети)

Пример - на фре ип 10.0.0.1\24 , на 80 порту висит апач.

Нужно пакеты с ип 10.0.0.1 направлять на ИП 10.0.0.10 (роутер в том же свиче, который разрулит пакеты дальше.)

 

Роутинг не предлагать, нужно обойтись без прописывания роутов.

На линуксе с помощью iproute2 это делается в две строчки, а вот по фре ничего не могу нагуглить.

Share this post


Link to post
Share on other sites

route было бы достаточно? тогда хватит

 

fwd | forward ipaddr | tablearg[,port]

Change the next-hop on matching packets to ipaddr, which can be

an IP address or a host name. For IPv4, 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 ter‐

minates if this rule matches.

Share this post


Link to post
Share on other sites

ipfw fwd 10.0.0.1 (локальный ИП) to 10.0.0.10 (ИП роутера который все разрулит)

 

я правильно сконструировал ??

Share this post


Link to post
Share on other sites

ipfw add fwd "куда" ip from any to me 80

имнип как-то так, но по-традиции в ядре должна быть опция IPFIREWALL_FORWARD, и вроде в GENERIC-ядре ее нет... :)

Edited by DVM-Avgoor

Share this post


Link to post
Share on other sites

Вот еще думаю полезно будет.

Это с opennet:

fwd ip-адрес[,порт]  Изменяет следующий переход (next-hop) для соответствующих пакетов, 
направляя их по указанному ip-адресу, который можно задавать либо в виде четверки чисел через точку, 
либо по имени хоста. Если ip-адрес непосредственно не доступен, 
вместо него используется соответствующий маршрут, полученный по локальной таблице маршрутизации. 
Если ip-адрес - локальный, при поступлении в систему пакета с удаленного хоста он будет 
перенаправлен на заданный порт на локальной машине, так что локальный адрес сокета 
остается установленным в соответствии с исходным IP-адресом, по которому направлялся 
пакет. Это действие предназначено для использования в прозрачных промежуточных серверах. 
Если IP-адрес - не локальный, дальнейший поиск прекращается; однако, при выходе из канала 
если переменная sysctl(8) net.inet.ip.fw.one_pass не установлена, пакет снова передается 
брандмауэру для проверки, начиная со следующего правила.

 

А это из MAN страницы:

fwd | forward ipaddr | tablearg[,port]
            Change the next-hop on matching packets to ipaddr, which can be
            an IP address or a host name.  For IPv4, 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 ter‐
            minates 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.

Edited by roma33rus

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this