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

FreeBSD 7.1+PF = не работает NAT

Добавлено: 2009-04-04 9:47:09
pakitan
Имеем FreeBSD 7.1
с роутера пингуется внешняя и внутренняя сеть
из внутренней сети не видно внешнюю, но пингуются оба ip роутера
походу какая-то проблема с nat (((

Господа, есть мысли?

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

router# ifconfig
vr0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
       options=2808<VLAN_MTU,WOL_UCAST,WOL_MAGIC>
       ether 00:13:46:ec:b6:63
       inet 91.197.xxx.xxx netmask 0xfffffe00 broadcast 91.197.xxx.xxx
       media: Ethernet autoselect (100baseTX <full-duplex>)
       status: active
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
       options=8<VLAN_MTU>
       ether 00:13:20:28:96:17
       inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
       media: Ethernet autoselect (100baseTX <full-duplex>)
       status: active
plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> metric 0 mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
       inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
       inet6 ::1 prefixlen 128
       inet 127.0.0.1 netmask 0xff000000
pflog0: flags=141<UP,RUNNING,PROMISC> metric 0 mtu 33204
[cut все что не относится к делу]

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

router# more /etc/rc.conf
gateway_enable="YES"
router="/sbin/routed"
router_enable="YES"
router_flags="-q"
pf_flags=""
pflog_enable="YES"
pf_rules="/etc/pf.conf"
pflog_logfile="/var/log/pflog"
pflog_flags=""
defaultrouter="91.197.xxx.xxx"
Упрощенный до предела pf

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

router# more /etc/pf.conf
ext_if = "vr0"
int_if = "fxp0"
lo_if = "lo0"

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

nat on $ext_if from !($ext_if) to any -> ($ext_if)
pass in on $ext_if proto tcp from any to $ext_if port 22
pass from { lo, $int_if:network } to any keep state

Re: FreeBSD 7.1+PF = не работает NAT

Добавлено: 2009-04-04 10:35:54
tom.cat
А зачем использовать эти настройки?

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

router="/sbin/routed"
router_enable="YES"
router_flags="-q"
Я так понял у Вас обычный шлюз в инет. И смысл использовать "lo0" в настройках pf.conf :-o ? Вот здесь http://www.openbsd.org/faq/pf/index.html расписано все до мелочей :smile:

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

ext_if="fxp0"
int_if="xl0"
nat on $ext_if from !($ext_if) -> ($ext_if:0)


Вот простой пример NAT. Остальные правила и фильтрацию пакетов допишите сами.

Re: FreeBSD 7.1+PF = не работает NAT

Добавлено: 2009-04-04 11:11:46
Гость
tom.cat писал(а):А зачем использовать эти настройки?

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

router="/sbin/routed"
router_enable="YES"
router_flags="-q"
Ну, предположим, при наличии gateway_enable="YES" в них особого смысла и нет, но pf.conf взят как раз из нижеуказанного мануала.
tom.cat писал(а): Я так понял у Вас обычный шлюз в инет. И смысл использовать "lo0" в настройках pf.conf :-o ? Вот здесь http://www.openbsd.org/faq/pf/index.html расписано все до мелочей :smile:

Re: FreeBSD 7.1+PF = не работает NAT

Добавлено: 2009-04-04 11:41:53
pakitan
добавляем в pf.conf

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

rdr pass on $ext_if proto tcp from any to ($ext_if) port 3389 tag RDP -> 192.168.0.5 port 3389
nat on $int_if tagged RDP -> 192.168.0.1
на внешнем интерфейсе запускаем tshark

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

router# tshark -i vr0 -V port 3389
Capturing on vr0
Из внешней сети делаем:

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

[root@router /etc]# telnet 91.197.xxx.xxx 3389
Trying 91.197.213.4...
telnet: connect to address 91.197.xxx.xxx: Connection refused
telnet: Unable to connect to remote host
и видим что думает по этому поводу tshark:

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

Frame 1 (74 bytes on wire, 74 bytes captured)
    Arrival Time: Apr  4, 2009 11:28:02.196371000
    [Time delta from previous captured frame: 0.000000000 seconds]
    [Time delta from previous displayed frame: 0.000000000 seconds]
    [Time since reference or first frame: 0.000000000 seconds]
    Frame Number: 1
    Frame Length: 74 bytes
    Capture Length: 74 bytes
    [Frame is marked: False]
    [Protocols in frame: eth:ip:tcp]
Ethernet II, Src: Cisco_d2:fd:01 (00:1c:58:d2:fd:01), Dst: D-Link_ec:b6:63 (00:13:46:ec:b6:63)
    Destination: D-Link_ec:b6:63 (00:13:46:ec:b6:63)
        Address: D-Link_ec:b6:63 (00:13:46:ec:b6:63)
        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
    Source: Cisco_d2:fd:01 (00:1c:58:d2:fd:01)
        Address: Cisco_d2:fd:01 (00:1c:58:d2:fd:01)
        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
    Type: IP (0x0800)
Internet Protocol, Src: 81.222.xxx.xxx (81.222.xxx.xxx), Dst: 91.197.xxx.xxx (91.197.xxx.xxx)
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..0. = ECN-Capable Transport (ECT): 0
        .... ...0 = ECN-CE: 0
    Total Length: 60
    Identification: 0xd733 (55091)
    Flags: 0x04 (Don't Fragment)
        0... = Reserved bit: Not set
        .1.. = Don't fragment: Set
        ..0. = More fragments: Not set
    Fragment offset: 0
    Time to live: 57
    Protocol: TCP (0x06)
    Header checksum: 0xfcbc [correct]
        [Good: True]
        [Bad : False]
    Source: 81.222.xxx.xxx (81.222.xxx.xxx)
    Destination: 91.197.xxx.xxx (91.197.xxx.xxx)
Transmission Control Protocol, Src Port: 53536 (53536), Dst Port: ms-wbt-server (3389), Seq: 0, Len: 0
    Source port: 53536 (53536)
    Destination port: ms-wbt-server (3389)
    Sequence number: 0    (relative sequence number)
    Header length: 40 bytes
    Flags: 0x02 (SYN)
        0... .... = Congestion Window Reduced (CWR): Not set
        .0.. .... = ECN-Echo: Not set
        ..0. .... = Urgent: Not set
        ...0 .... = Acknowledgment: Not set
        .... 0... = Push: Not set
        .... .0.. = Reset: Not set
        .... ..1. = Syn: Set
        .... ...0 = Fin: Not set
    Window size: 65535
    Checksum: 0x8b53 [correct]
        [Good Checksum: True]
        [Bad Checksum: False]
    Options: (20 bytes)
        Maximum segment size: 1420 bytes
        NOP
        Window scale: 3 (multiply by 8)
        SACK permitted
        Timestamps: TSval 5572585, TSecr 0

Frame 2 (60 bytes on wire, 60 bytes captured)
    Arrival Time: Apr  4, 2009 11:28:02.196395000
    [Time delta from previous captured frame: 0.000024000 seconds]
    [Time delta from previous displayed frame: 0.000024000 seconds]
    [Time since reference or first frame: 0.000024000 seconds]
    Frame Number: 2
    Frame Length: 60 bytes
    Capture Length: 60 bytes
    [Frame is marked: False]
    [Protocols in frame: eth:ip:tcp]
Ethernet II, Src: D-Link_ec:b6:63 (00:13:46:ec:b6:63), Dst: Cisco_d2:fd:01 (00:1c:58:d2:fd:01)
    Destination: Cisco_d2:fd:01 (00:1c:58:d2:fd:01)
        Address: Cisco_d2:fd:01 (00:1c:58:d2:fd:01)
        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
    Source: D-Link_ec:b6:63 (00:13:46:ec:b6:63)
        Address: D-Link_ec:b6:63 (00:13:46:ec:b6:63)
        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
    Type: IP (0x0800)
    Trailer: 000000000000
Internet Protocol, Src: 91.197.xxx.xxx (91.197.xxx.xxx), Dst: 81.222.xxx.xxx (81.222.xxx.xxx)
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..0. = ECN-Capable Transport (ECT): 0
        .... ...0 = ECN-CE: 0
    Total Length: 40
    Identification: 0xac86 (44166)
    Flags: 0x04 (Don't Fragment)
        0... = Reserved bit: Not set
        .1.. = Don't fragment: Set
        ..0. = More fragments: Not set
    Fragment offset: 0
    Time to live: 64
    Protocol: TCP (0x06)
    Header checksum: 0x207e [correct]
        [Good: True]
        [Bad : False]
    Source: 91.197.xxx.xxx (91.197.xxx.xxx)
    Destination: 81.222.xxx.xxx (81.222.xxx.xxx)
Transmission Control Protocol, Src Port: ms-wbt-server (3389), Dst Port: 53536 (53536), Seq: 1, Ack: 1, Len: 0
    Source port: ms-wbt-server (3389)
    Destination port: 53536 (53536)
    Sequence number: 1    (relative sequence number)
    Acknowledgement number: 1    (relative ack number)
    Acknowledgement number: 1    (relative ack number)
    Header length: 20 bytes
    Flags: 0x14 (RST, ACK)
        0... .... = Congestion Window Reduced (CWR): Not set
        .0.. .... = ECN-Echo: Not set
        ..0. .... = Urgent: Not set
        ...1 .... = Acknowledgment: Set
        .... 0... = Push: Not set
        .... .1.. = Reset: Set
        .... ..0. = Syn: Not set
        .... ...0 = Fin: Not set
    Window size: 0
    Checksum: 0xfb34 [correct]
        [Good Checksum: True]
        [Bad Checksum: False]
    [SEQ/ACK analysis]
        [This is an ACK to the segment in frame: 1]
        [The RTT to ACK the segment was: 0.000024000 seconds]
На внутреннем интерфейсе tshark молчит. ((

Re: FreeBSD 7.1+PF = не работает NAT

Добавлено: 2009-04-04 15:14:18
pakitan
еще более странно....
на внешнем интерфейсе
Internet Protocol, Src: 192.168.0.5 (192.168.0.5), Dst: 195.242.2.2 (195.242.2.2)
Version: 4
Header length: 20 bytes

это походу винда из внутренней сети куда-то ломится
что странно, разве при прохождении через NAT 192.168.0.5 не должен меняться на ip роутера?

Re: FreeBSD 7.1+PF = не работает NAT

Добавлено: 2009-04-04 15:27:08
paradox
айпи должен меняться

но вы бы сделали по нормальному без тага
сначала нормальный нат - что бы нормально в серой сети видно было белые адресса
а потом просто добавили rdr для rdp
а вы там слишком закрутили
есть предположение что обратный пакет не попадает под нат

Re: FreeBSD 7.1+PF = не работает NAT

Добавлено: 2009-04-04 15:39:06
pakitan
paradox писал(а):айпи должен меняться

но вы бы сделали по нормальному без тага
сначала нормальный нат - что бы нормально в серой сети видно было белые адресса
а потом просто добавили rdr для rdp
а вы там слишком закрутили
есть предположение что обратный пакет не попадает под нат
убрал rdr - ситуация та же ((
а под nat он наверное не попадает, потому что к dst приходит пакет с серым ip -- кому он отвечать-то будет?

Re: FreeBSD 7.1+PF = не работает NAT

Добавлено: 2009-04-04 16:01:04
paradox
:cz2:
что вы голову морочите

настройте нат нормально
что бы оно меняло src айпи
и возращалось на роутер
а потом уже будете rdr крутить

Re: FreeBSD 7.1+PF = не работает NAT

Добавлено: 2009-04-04 16:18:22
Гость
paradox писал(а)::cz2:
что вы голову морочите

настройте нат нормально
что значит НОРМАЛЬНО?
Вверху все есть. Разве что-то не так?

Re: FreeBSD 7.1+PF = не работает NAT

Добавлено: 2009-04-04 16:22:25
paradox
Имеем FreeBSD 7.1
с роутера пингуется внешняя и внутренняя сеть
из внутренней сети не видно внешнюю, но пингуются оба ip роутера
походу какая-то проблема с nat (((
а что тут нормального?

Re: FreeBSD 7.1+PF = не работает NAT

Добавлено: 2009-04-04 16:30:36
pakitan
paradox писал(а): а что тут нормального?
Ну вот как бы в этом и вопрос (((
Вроде все настроено, но через NAT походу ни один пакет не проходит (

Re: FreeBSD 7.1+PF = не работает NAT

Добавлено: 2009-04-04 16:47:24
paradox
отож
сначала вы нат пытались настраивать в первом сообщении
а во тором уже редирект пытались завести при нерабочем нате
)
вы уж определитесь
и pflog у вас для чего?
что бы смотреть что попадает или не попадает в нат и как отрабатывает фаервол

Re: FreeBSD 7.1+PF = не работает NAT

Добавлено: 2009-04-04 16:58:42
pakitan
paradox писал(а): и pflog у вас для чего?
что бы смотреть что попадает или не попадает в нат и как отрабатывает фаервол
pflog пустой

Re: FreeBSD 7.1+PF = не работает NAT

Добавлено: 2009-04-04 18:59:08
pakitan
Все оказалось прозаично, господа:
в запарках забыл в rc.conf pf_enable="YES"
Спасибо всем за участие! )

Re: FreeBSD 7.1+PF = не работает NAT

Добавлено: 2009-04-05 0:08:26
tom.cat
:ROFL: это издевательство.