Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Общий по FreeBSD (http://forum.oszone.net/forumdisplay.php?f=10)
-   -   [решено] NATD, Portmapping и IPFW (http://forum.oszone.net/showthread.php?t=184861)

Negativ 07-09-2010 17:57 1490411

NATD, Portmapping и IPFW
 
в rc.firewall
natd_flags="-same_ports -redirect_port tcp 192.168.1.127:80 80"

Как проверить, работает ли этот маппинг?
Снаружи при попытке зайти на этот хост нет ответа.
tcpdump регистрирует входящие пакеты.

bozordzh 07-09-2010 18:16 1490426

natd_flags="-same_ports yes -redirect_port tcp 192.168.1.127:80 80" вроде так надо
вот например конфиг ната:
use_sockets yes
same_ports yes
unregistered_only yes
interface rl1
#redirect_port tcp 192.168.5.6:20001 20001
еще надо указать интерфейс где он должен крутиться

bozordzh 07-09-2010 18:40 1490437

А вообще юзай лучше rinetd, вот почитай: http://www.lissyara.su/articles/freebsd/trivia/rinetd/

Negativ 08-09-2010 09:21 1490853

Цитата:

Цитата bozordzh
еще надо указать интерфейс где он должен крутиться »

в rc.conf вроде бы явно указывается интерфейс для NATD

Negativ 08-09-2010 09:58 1490876

bozordzh,
как только я добавляю в natd.conf
use_sockets yes
same_ports yes
unregistered_only yes
interface stge0
natd_flags="-same_ports -redirect_port tcp 192.168.1.127:80 80"

пропадает интернет везде.

vadblm 08-09-2010 12:22 1490975

Если используете внешний конфигурационный файл для передачи опций, то следует об этом сообщить natd вот так:
Код:

natd_flags="-f /etc/natd.conf"
и больше никиких флагов в этой директиве не передавать, а прописывать всё что нужно в natd.conf

Negativ 08-09-2010 14:15 1491076

vadblm,
Сделал как написали, но это все-равно не работает.

в natd.conf:
Код:

same_ports yes
use_sockets yes
interface stge0
unregistered_only yes
redirect_port tcp 192.168.1.127:80 80


Telepuzik 08-09-2010 14:26 1491081

Вывод команды ps -A | grep natd покажите. Правила ipfw покажите.

Negativ 08-09-2010 16:44 1491159

Код:

ps -A | grep natd
  596  ??  Ss    0:02,69 /sbin/natd -f /etc/natd.conf -n stge0
 1575  p0  S+    0:00,00 grep natd

Код:

ipfw show
00100    450    24700 allow ip from any to any via lo0
00200      0        0 deny ip from any to 127.0.0.0/8
00300      0        0 deny ip from 127.0.0.0/8 to any
00400  12979  1291731 allow ip from 192.168.1.0/24 to 192.168.1.0/24 via msk0
00500 124276 100442042 divert 8668 log logamount 100 ip from any to any via stge0
00600 124279 100442618 allow log logamount 100 ip from any to any via stge0
00700      0        0 divert 8668 ip from 192.168.1.0/24 to any out via stge0
00800      0        0 allow ip from внешнийайпи to any out via stge0
00900  53893  5341944 allow ip from 192.168.1.0/24 to any in via msk0
01000      0        0 allow ip from 192.168.1.0/24 to any out via stge0
01100      0        0 allow ip from any to 192.168.1.0/24 in via stge0
01200  74890  95760375 allow ip from any to 192.168.1.0/24 out via msk0
01300    934    95563 allow udp from any to any via msk0
01400      0        0 deny log logamount 100 ip from any to any
65535      0        0 allow ip from any to any


Telepuzik 08-09-2010 17:03 1491172

Цитата:

Цитата Negativ
00500 124276 100442042 divert 8668 log logamount 100 ip from any to any via stge0 »

Что то не нравится мне это правило. Попробуйте прописать 450-ым следующее правило:
ipfw add allow ip from any to <внешний ip> 80 in via stge0

Negativ 08-09-2010 17:20 1491183

Цитата:

Цитата Telepuzik
Что то не нравится мне это правило. Попробуйте прописать 450-ым следующее правило:
ipfw add allow ip from any to <внешний ip> 80 in via stge0 »

добавил разницы нет.

ipfw show
Код:

00450      9      432 allow ip from any to внешнийайпи dst-port 80 in via stge0

Telepuzik 08-09-2010 17:29 1491188

Я думаю что проблема где то в правилах ipfw. У меня просто правило divert разбито на два правила. Попробуйте прописать правило 460: ipfw add divert natd ip from any to <внешний ip > in via stge0 а 450 отключите.
А из локальной сети сайт нормально открывается.

Negativ 08-09-2010 17:59 1491207

Цитата:

Цитата Telepuzik
Я думаю что проблема где то в правилах ipfw. У меня просто правило divert разбито на два правила. Попробуйте прописать правило 460: ipfw add divert natd ip from any to <внешний ip > in via stge0 а 450 отключите.
А из локальной сети сайт нормально открывается. »

сделал. хост по прежнему снаружи не отвечает по 80 порту. И пропал инет у клиентов.
Сайт в локалке открывается.

Telepuzik 09-09-2010 10:16 1491585

Попробуйте отключить свое правило диверта (500), и прописать вместо него правила:
ipfw add divert natd ip from 192.168.1.0/24 to any out via stge0
ipfw add divert natd ip from any to <внешний ip > in via stge0
ipfw add allow tcp from any to any established

и вывод ipfw show с этими правилами покажите. И вывод ifconfig с Веб сервера покажите.

Negativ 09-09-2010 16:38 1491852

Код:

gate_serv# ipfw show
00100  0    0 allow ip from any to any via lo0
00200  0    0 deny ip from any to 127.0.0.0/8
00300  0    0 deny ip from 127.0.0.0/8 to any
00400 106 23040 allow ip from 192.168.1.0/24 to 192.168.1.0/24 via msk0
00500  0    0 divert 8668 ip from 192.168.1.0/24 to any out via stge0
00600  0    0 divert 8668 ip from any to внешнийайпи in via stge0
00700  0    0 allow tcp from any to any established
00800  0    0 allow ip from 192.168.1.0/24 to any in via msk0
00900  0    0 allow ip from 192.168.1.0/24 to any out via stge0
01000  0    0 allow ip from any to 192.168.1.0/24 in via stge0
01100  0    0 allow ip from any to 192.168.1.0/24 out via msk0
01200  0    0 allow udp from any to any via msk0
01300  0    0 deny log logamount 100 ip from any to any
65535  20  2016 allow ip from any to any

на вебсервере куда мапятся пакеты это сделать невозможно. Это железка с вебинтерфейсом.
Собственно с этими правилами инета нет нигде. И маппинг так же не работает.

Telepuzik 09-09-2010 16:50 1491861

Цитата:

Цитата Negativ
на вебсервере куда мапятся пакеты это сделать невозможно »

На нем шлюз прописан? Вы после внесения изменений в настройки файрвола перезапускаете машину или тока файрвол? Содержимое rc.conf покажите. И правило 400 поставьте ниже диверта.

Negativ 13-09-2010 11:40 1494248

Цитата:

Цитата Telepuzik
На нем шлюз прописан? »

как я мог про это забыть? Прописал это
Код:

ipfw show
00100  0    0 allow ip from any to any via lo0
00200  0    0 deny ip from any to 127.0.0.0/8
00300  0    0 deny ip from 127.0.0.0/8 to any
00400  0    0 divert 8668 ip from 192.168.1.0/24 to any out via stge0
00500  0    0 divert 8668 ip from any to внешнийайпи in via stge0
00600 199 44600 allow tcp from any to any established
00700  15  1344 allow ip from 192.168.1.0/24 to 192.168.1.0/24 via msk0
00800  7  822 allow ip from 192.168.1.0/24 to any in via msk0
00900  0    0 allow ip from 192.168.1.0/24 to any out via stge0
01000  0    0 allow ip from any to 192.168.1.0/24 in via stge0
01100  0    0 allow ip from any to 192.168.1.0/24 out via msk0
01200  1    68 allow udp from any to any via msk0
01300  0    0 deny log logamount 100 ip from any to any
65535  44  4496 allow ip from any to any

заработал проброс
но не работает инет ни на шлюзе ни на клиентах.

Telepuzik 13-09-2010 12:03 1494266

Цитата:

Цитата Negativ
00400 0 0 divert 8668 ip from 192.168.1.0/24 to any out via stge0
00500 0 0 divert 8668 ip from any to внешнийайпи in via stge0 »

Так а stge0 это внешний интерфейс? Вывод ifconfig покажите?

Negativ 13-09-2010 16:04 1494468

Цитата:

Цитата Telepuzik
Так а stge0 это внешний интерфейс? Вывод ifconfig покажите? »

Код:

ifconfig
msk0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=11a<TXCSUM,VLAN_MTU,VLAN_HWTAGGING,TSO4>
        ether 00:11:2f:e0:0e:e4
        inet 192.168.1.101 netmask 0xffffff00 broadcast 192.168.1.255
        media: Ethernet autoselect (1000baseTX <full-duplex,flag0,flag1>)
        status: active
stge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=209b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC>
        ether 00:22:15:11:02:7b
        inet внешнийайпи netmask 0xfffffff0 broadcast броадкастайпи
        media: Ethernet autoselect (1000baseTX <full-duplex,flag0,flag1,flag2>)
        status: active
plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> metric 0 mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        inet 127.0.0.1 netmask 0xff000000


Telepuzik 13-09-2010 16:15 1494475

Допишите еще правило ipfw add allow ip from <внешний ip> to any out xmit stge0

Negativ 13-09-2010 16:38 1494494

Telepuzik,
дописал. Результат не изменился.

Telepuzik 13-09-2010 17:36 1494552

Странно у меня такие же правила и все работает. А rc.conf все таки покажите.

Negativ 14-09-2010 11:48 1495024

Telepuzik,
Спасибо за помощь.
Не хватало еще одного правила после вашего
Код:

ipfw add allow ip from <внешний ip> to any out xmit stge0
Код:

allow ip from any to <внешний ip> in via stge0
Итого:
в rc.conf:
Код:

ifconfig_stge0="inet <внешний ip>  netmask <маска>"
ifconfig_msk0="inet <внутренний ip>  netmask <маска>"
defaultrouter="<ip шлюза по-умолчанию>"
hostname="имя вашего хоста"

named_enable="YES"
inetd_enable="NO"
sshd_enable="YES"
sendmail_enable="NONE"
gateway_enable="YES"
firewall_enable="YES"
firewall_type="MY"
natd_enable="YES"
natd_interface="stge0"
natd_flags="-f /etc/natd.conf"
dhcpd_enable="YES"
icmp_drop_redirect="YES"        # игнорируем перенаправленные ICMP пакеты
icmp_log_redirect="YES"        # включаем логинг ICMP REDIRECT
squid_enable="YES"

в natd.conf
Код:

same_ports yes
use_sockets yes
interface stge0
unregistered_only yes
redirect_port tcp внутреннийip:порт порт

в rc.firewall
Код:

        # Разрешаем трафик loopback интерфейсе
        ${fwcmd} add pass all ip from any to any via lo0

        # Заворачиваем исходящий трафик из локалки наружу через внешний интерфейс
        ${fwcmd} add divert natd ip from 192.168.1.0/24 to any out via stge0

        # Заворачиваем входящий трафик снаружи на внешний ip через внешний интерфейс
        ${fwcmd} add divert natd ip from any to <внешний ip> in via stge0

        # Разрешаем выход трафика с внешнего ip на любой ТОЛЬКО через внешний интерфейс
        ${fwcmd} add allow ip from <внешний ip> to any out xmit stge0

        # Разрешаем вход трафика снаружи на внешний ip через внешний интерфейс
        ${fwcmd} add allow ip from any to <внешний ip> in via stge0

        # Разрешаем весь TCP трафик с установленным соединением (Когда бит ACK сброшен и установлен SYN. См. RFC по установке TCP соединения)
        ${fwcmd} add allow tcp from any to any established

        # Разрешаем трафик внутри локалки через внутренний интерфейс
        ${fwcmd} add allow ip from 192.168.1.0/24 to 192.168.1.0/24 via msk0

        # Разрешаем трафик из локалки куда угодно через внутренний интерфейс (трафик поступает из локалки во внутренний интерфейс)
        ${fwcmd} add allow ip from 192.168.1.0/24 to any in via msk0

        # Разрешаем трафик из локалки куда угодно через внешний интерфейс (трафик из локалки выходит с внешнего интерфейса)
        ${fwcmd} add allow ip from 192.168.1.0/24 to any out via stge0

        # Разрешаем входящий трафик откуда угодно в локалку  через внешний интерфейс
        ${fwcmd} add allow ip from any to 192.168.1.0/24 in via stge0

        # Разрешаем исходящий трафик откуда угодно в локалку через внутренний интерфейс
        ${fwcmd} add allow ip from any to 192.168.1.0/24 out via msk0

        # Разрешаем весь UDP ходящий через внутренний интерфейс (Это необходимо если у вас в сети функционирует DNS и DHCP)
        ${fwcmd} add allow udp from any to any via msk0

        # Запрещаем все
        ${fwcmd} add deny log ip from any to any

P.S.: Последнее сообщение можно прикрепить в начало темы.


Время: 04:32.

Время: 04:32.
© OSzone.net 2001-