pf-重定向规则不起作用

pf-重定向规则不起作用

我在 FreeBSD 9 上使用 pf。sshd 已启动并且仅在环回上监听(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]>

我的设置有什么问题?

如何获得更多的日志输出?

答案1

您检查过您的 sshd 监听地址吗?

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

首先*意味着 sshd 正在监听机器上的每个本地地址,包括 127.0.0.1。

SSHD_配置(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 连接通过 rdr 规则重定向到 127.0.0.1 - SYN 数据包被发送到 127.0.0.1:tcp/22 (SYN_SENT)

但是127.0.0.1:tcp/22并未打开,显示为CLOSED。

相关内容