发现通过pfsense这个强大的工具来学习pf规则的使用是再好不过的了,先按照应用环境配置好pfsense,然后ssh登录到服务器上检查所配置的pf rule,然后挨条解读这些Rule。
首先是NAT规则,这个我本来已经比较熟悉了,而且pfsense安装好之后默认就是开启NAT的,因此纯记录之,
fxp0为LAN接口,fxp1为WAN接口,内网IP为10.111.5.0/24,去除了无关紧要的行。
# pfctl -sn
nat on fxp1 inet from 10.111.5.0/24 port = isakmp to any port = isakmp -> (fxp1) port 500 round-robin #将LAN外联WAN的isakmp<->isakmp连接nat到WAN的500端口,这个服务不知道是干什么的,忽略之。
nat on fxp1 inet from 10.111.5.0/24 to any -> (fxp1) round-robin #关键在这里,将LAN网段在WAN口做NAT,使用round-robin(默认)方式
no rdr on fxp0 proto tcp from any to
rdr on fxp0 inet proto tcp from any to any port = ftp -> 127.0.0.1 port 8021 #将LAN内21端口转发至本机8021
NAT核心语句就只是第二条。
FTP服务的转向是因为FTP命令中有打开额外数据端口的指令,这些指令在NAT环境下需要做一下伪装,因为Internet中的FTP Server接收到类似 PORT 10.111.5.123 12345这种地址的命令是不会找到正确的端口的,在此需将其masq至WAN口的IP和端口,具体是通过运行在8021端口的ftp-proxy实现的。







