URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 84785
[ Назад ]

Исходное сообщение
"FreeBSD 7.1 + pf = не работает NAT"

Отправлено solariz , 04-Апр-09 00:22 
Имеем 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

router# more /etc/rc.conf
[cut все что не относится к делу]
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


Содержание

Сообщения в этом обсуждении
"FreeBSD 7.1 + pf = не работает NAT"
Отправлено solariz , 04-Апр-09 12:43 
добавляем в 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 молчит.


"FreeBSD 7.1 + pf = не работает NAT"
Отправлено solariz , 04-Апр-09 19:57 
Все оказалось прозаично, господа:
в запарках забыл в rc.conf pf_enable="YES"
Спасибо всем за участие! )



"FreeBSD 7.1 + pf = не работает NAT"
Отправлено urusha , 04-Апр-09 13:34 
set skip on lo_if

nat on $ext_if from $int_if:network to !$int_if -> ($ext_if)
block
pass out quick
pass in on $ext_if proto tcp from any to $ext_if port 22
pass in on $int_if from $int_if:network


"FreeBSD 7.1 + pf = не работает NAT"
Отправлено solariz , 04-Апр-09 15:43 
>set skip on lo_if
>
>nat on $ext_if from $int_if:network to !$int_if -> ($ext_if)
>block
>pass out quick
>pass in on $ext_if proto tcp from any to $ext_if port 22
>
>pass in on $int_if from $int_if:network

к сожалению ничего не изменилось


"FreeBSD 7.1 + pf = не работает NAT"
Отправлено urusha , 04-Апр-09 15:53 
>к сожалению ничего не изменилось

c этими правилами пингуйте какой-нить сервер и покажите вывод pfctl -vsn, pfctl -vsn, pfctl -vss


"FreeBSD 7.1 + pf = не работает NAT"
Отправлено solariz , 04-Апр-09 16:13 
>>к сожалению ничего не изменилось
>
>c этими правилами пингуйте какой-нить сервер и покажите вывод pfctl -vsn, pfctl
>-vsn, pfctl -vss

мне недоступна внутренняя сеть ((
пинговать с роутера думаю нет смысла.

кстати:
еще более странно....
на внешнем интерфейсе
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 роутера?


"FreeBSD 7.1 + pf = не работает NAT"
Отправлено urusha , 04-Апр-09 16:38 
>пинговать с роутера думаю нет смысла.

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


"FreeBSD 7.1 + pf = не работает NAT"
Отправлено solariz , 04-Апр-09 16:42 
>>пинговать с роутера думаю нет смысла.
>
>я тоже так думаю... я имел ввиду пингоните с внутренней машины, и
>покажите после вывод всех команд

у меня нет доступа на внутр. машину. Только на роутер.
Вывод pfctl -vsn я показал -- внутренняя машина ломится обновить винду -- думаю, что это даже лучше чем пингануть.


"FreeBSD 7.1 + pf = не работает NAT"
Отправлено urusha , 04-Апр-09 16:59 
если она точно ломилась, то покажите вывод !всех! команд


"FreeBSD 7.1 + pf = не работает NAT"
Отправлено solariz , 04-Апр-09 17:00 
>если она точно ломилась, то покажите вывод !всех! команд

router# pfctl -vsn
No ALTQ support in kernel
ALTQ related functions disabled
nat on vr0 inet from 192.168.0.0/24 to ! 192.168.0.1 -> (vr0) round-robin
  [ Evaluations: 0         Packets: 0         Bytes: 0           States: 0     ]
  [ Inserted: uid 0 pid 3429 ]
router# pfctl -vss
No ALTQ support in kernel
ALTQ related functions disabled



"FreeBSD 7.1 + pf = не работает NAT"
Отправлено urusha , 04-Апр-09 17:03 
>>если она точно ломилась, то покажите вывод !всех! команд

сори мой тупняк pfctl -vsr вместо второго n



"FreeBSD 7.1 + pf = не работает NAT"
Отправлено solariz , 04-Апр-09 17:04 
>>>если она точно ломилась, то покажите вывод !всех! команд
>
>сори мой тупняк pfctl -vsr вместо второго n

router# pfctl -vsr
No ALTQ support in kernel
ALTQ related functions disabled
block drop all
  [ Evaluations: 0         Packets: 0         Bytes: 0           States: 0     ]
  [ Inserted: uid 0 pid 3429 ]
pass out quick all flags S/SA keep state
  [ Evaluations: 0         Packets: 0         Bytes: 0           States: 0     ]
  [ Inserted: uid 0 pid 3429 ]
pass in on vr0 inet proto tcp from any to 91.197.213.4 port = ssh flags S/SA keep state
  [ Evaluations: 0         Packets: 0         Bytes: 0           States: 0     ]
  [ Inserted: uid 0 pid 3429 ]
pass in on fxp0 inet from 192.168.0.0/24 to any flags S/SA keep state
  [ Evaluations: 0         Packets: 0         Bytes: 0           States: 0     ]
  [ Inserted: uid 0 pid 3429 ]


"FreeBSD 7.1 + pf = не работает NAT"
Отправлено urusha , 04-Апр-09 17:21 
ого, судя по этому в pf вообще ниодин пакет не попал... может стоит отключить router в rc.conf?
kldstat |grep pf
что говорит?

"FreeBSD 7.1 + pf = не работает NAT"
Отправлено solariz , 04-Апр-09 17:29 
>ого, судя по этому в pf вообще ниодин пакет не попал... может
>стоит отключить router в rc.conf?
>kldstat |grep pf
>что говорит?

router# more /etc/rc.conf | grep rout
hostname="router.broker.ru"
#router="/sbin/routed"
#router_enable="YES"
#router_flags="-q"
#defaultrouter="91.197.212.1"
#defaultrouter="91.197.212.1"
#defaultrouter="192.168.0.1"
defaultrouter="91.197.212.1"
router#
router# kldstat |grep pf
3    1 0xc310f000 3000     pflog.ko
4    1 0xc3112000 33000    pf.ko


"FreeBSD 7.1 + pf = не работает NAT"
Отправлено solariz , 04-Апр-09 16:19 
>>к сожалению ничего не изменилось
>
>c этими правилами пингуйте какой-нить сервер и покажите вывод pfctl -vsn, pfctl
>-vsn, pfctl -vss

router# pfctl -vsn
No ALTQ support in kernel
ALTQ related functions disabled
nat on vr0 inet from 192.168.0.0/24 to ! 192.168.0.1 -> (vr0) round-robin
  [ Evaluations: 0         Packets: 0         Bytes: 0           States: 0     ]
  [ Inserted: uid 0 pid 3186 ]
nat on fxp0 inet all tagged RDP -> 192.168.0.1
  [ Evaluations: 0         Packets: 0         Bytes: 0           States: 0     ]
  [ Inserted: uid 0 pid 3186 ]
rdr pass on vr0 inet proto tcp from any to (vr0) port = rdp tag RDP -> 192.168.0.5 port 3389
  [ Evaluations: 0         Packets: 0         Bytes: 0           States: 0     ]
  [ Inserted: uid 0 pid 3186 ]


"FreeBSD 7.1 + pf = не работает NAT"
Отправлено simpleaka , 11-Ноя-09 16:16 
>[оверквотинг удален]
> Packets: 0        
>Bytes: 0          
> States: 0     ]
>  [ Inserted: uid 0 pid 3186 ]
>rdr pass on vr0 inet proto tcp from any to (vr0) port = rdp tag RDP -> 192.168.0.5 port 3389
>  [ Evaluations: 0        
> Packets: 0        
>Bytes: 0          
> States: 0     ]
>  [ Inserted: uid 0 pid 3186 ]

Опции в rc.conf:
gateway_enable="YES" #

добавь и будет тебе счастье



"FreeBSD 7.1 + pf = не работает NAT"
Отправлено solariz , 11-Ноя-09 17:19 
>Опции в rc.conf:
>gateway_enable="YES" #
>
>добавь и будет тебе счастье

Четвертого апреля отписался о том, что в запарке забыл gateway_enable="YES" и закрыл тему
Но все равно большое спасибо за участие.