Назад | Перейти на главную страницу

pf - правило перенаправления не работает

Я использую pf на FreeBSD 9. sshd работает и слушает только loopback (127.0.0.1).

Попытка использовать правило перенаправления, чтобы разрешить сетевым узлам подключаться через ssh.

set block-policy drop
set skip on lo0
scrub in

no rdr on lo0 all
rdr on fxp0 inet proto tcp from any to (fxp0) port = ssh -> 127.0.0.1

block drop in log quick on ! lo inet from 127.0.0.0/8 to any
block drop log on fxp0 all
pass in quick on fxp0 inet proto tcp from any to 127.0.0.1 port ssh
pass out quick on fxp0 all keep state

По какой-то причине это не работает, и я не вижу связанных сообщений в pflog.

Пробовал также с rdr pass с тем же результатом.

Я вижу этот статус из pfctl -ss:

all tcp 127.0.0.1:22 (192.168.0.40:22) <- 192.168.0.252:65105   CLOSED:SYN_SENT

Когда я включаю ведение журнала для rdr, я вижу следующее:

rdr in on fxp0: 192.168.0.252.65105 > 127.0.0.1.22: Flags [S], seq 1927917349, win 65535, options [mss 1460,nop,wscale 3,sackOK,TS[|tcp]>

Что не так с моей настройкой?

Как получить больше результатов журнала?

Вы проверили свои адреса прослушивания sshd?

$ netstat -a | grep ssh
tcp4       0      0 *.ssh                  *.*                    LISTEN
tcp6       0      0 *.ssh                  *.*                    LISTEN

Первый * означает, что sshd прослушивает все локальные адреса на машине, включая 127.0.0.1.

SSHD_CONFIG (5)

 ListenAddress
         Specifies the local addresses sshd(8) should listen on.  The fol-
         lowing forms may be used:

               ListenAddress host|IPv4_addr|IPv6_addr
               ListenAddress host|IPv4_addr:port
               ListenAddress [host|IPv6_addr]:port

         If port is not specified, sshd will listen on the address and all
         prior Port options specified.  The default is to listen on all
         local addresses.  Multiple ListenAddress options are permitted.
         Additionally, any Port options must precede this option for non-
         port qualified addresses.

Если sshd не прослушивает адрес 127.0.0.1, он отображается как CLOSED: SYN_SENT в pfctl -ss вывод.

netstat вывод после того, как sshd будет слушать только 192.168.10.114.

$ netstat -a | grep ssh
tcp4       0      0 192.168.10.114.ssh     *.*                    LISTEN

При попытке установить ssh на эту машину, pfctl -ss вывод такой, как показано ниже.

$ pfctl -ss
all tcp 127.0.0.1:22 (192.168.10.114:22) <- 192.168.10.107:50701       CLOSED:SYN_SENT

ssh-соединение перенаправляется на 127.0.0.1 правилом rdr - SYN-пакет отправляется на 127.0.0.1:tcp/22 (SYN_SENT)

Однако 127.0.0.1:tcp/22 не открыт, он отображается как ЗАКРЫТО.