在2005年11月, 在OpenBSD当前版中新的FTP代理取代了原有的(/usr/libexec/ftp-proxy), 新的FTP代理在 /usr/sbin。这个软件包含在后来的OpenBSD 3.9中。
老风格的FTP代理程序是相当于带有PF的OpenBSD3.8的或更早期的版本基本系统的一部分, 它一般通过被称为超级服务的inetd的选项启动,配置文件在 /etc/inetd.conf 。说明:此部分仅适用于OpenBSD 3.8的等效或更早期的版本: 本节侧重于描述原本作为port的PF进入OpenBSD新发行版本时的防火墙功能。如果你使用一个现在版本的PF, 请直接跳到“新的风格的FTP: ftp-proxy”,查阅最新的信息。(译者注:这段翻译纯属鸡肋,我感觉至少在中国很少有人用3.8的OpenBSD了。)
你应该通过在rc.conf里加入一行:
代码: 全选
inetd_enable="YES"
下面的这行代码指定了ftp代理在loopback接口运行在NAT模式下:
代码: 全选
127.0.0.1:8021 stream tcp nowait root /usr/libexec/ftp-proxy ftp-proxy -n
在FreeBSD里, 在inetd.conf文件里也包含一个注释掉同样作用的语句, 只不过在语法上和OpenBSD略有差异。
要启用ftp-proxy, 你只需去掉那行的注释符。
要使变化生效, 重新启动inetd。
在FreeBSD, NetBSD, 和其它基于rcNG的BSDs里, 你只需这样做
代码: 全选
$ sudo /etc/rc.d/inetd restart
现在实际的就重定向中, 重定向 (rdr) 规则和 NAT (nat)
规则已经成为同一级别的规则。这些规则可以直接被其它的规则引用, 而且过滤过则也可以基于这些规则制定。逻辑上, rdr 和 nat 规则应该定义在过滤规则前。
我们在/etc/pf.conf文件中nat规则的后面马上接着的是 rdr 规则 :
代码: 全选
rdr pass on $int_if proto tcp from any to any port ftp -> 127.0.0.1 port 8021
代码: 全选
pass in on $ext_if inet proto tcp from port ftp-data to ($ext_if) \
user proxy flags S/SA keep state
保存 pf.conf 文件, 然后导入新规则
代码: 全选
$ sudo pfctl -f /etc/pf.conf
这个例子假设你正在一个处理内部无可路由地址的网关上运行。(译者:别晕,这里说的是无公网IP的内网地址。) 这里的基本配置能广泛地适用于各类FTP服务器和客户端。 在实际应用里, 你可能需要调整ftp代理两边的通讯, 所以要获得更好的FTP代理效果, 要熟悉一下代理的各种参数。通过查看ftp-proxy用户手册, 你可以找到限制范围和数据通讯端口的实例, 以及怎样配合各式各样的应用和服务。