邪恶八进制信息安全团队技术讨论组's Archiver

pub!1c 2006-9-26 18:23

[转载]用pf实现一个端口提供多种服务

信息来源: Linuxeden<br /><br />本文档向大家介绍了用 bsd 中的 pf 实现同一个端口针对不同IP提供不同服务的样例<br />
转载请注明出自 Linux伊甸园<br />
<br />
在系统中启用 pf,pf 中做以下设置:<br />
<br />
ext_if="fxp0"<br />
<br />
#本机IP地址<br />
table <trusted> { 202.202.202.202 }<br />
#<br />
#  IP for the service external interface:<br />
serverext="202.202.202.202 port 80"<br />
#<br />
#  servers bound on localhost aliases:<br />
server0="127.0.0.10 port 80"    # apache<br />
server1="127.0.0.11 port 80"    # ftpd<br />
server2="127.0.0.12 port 80"    # smtp<br />
server3="127.0.0.13 port 80"    # pop3<br />
table <server> { 127.0.0.10, 127.0.0.11, 127.0.0.12, 127.0.0.13}<br />
<br />
# TABLES for redirection ( if you change anything here pls also see<br />
# <br />
table <level1> persist file "/usr/local/rang1/conf/acl"<br />
table <level2> persist file "/usr/local/rang2/conf/acl"<br />
table <level3> persist file "/usr/local/rang3/conf/acl"<br />
<br />
# RULES for redirection  (first match wins!)<br />
rdr on $ext_if proto tcp from <level3> to $serverext -> $server3<br />
rdr on $ext_if proto tcp from <level2> to $serverext -> $server2<br />
rdr on $ext_if proto tcp from <level1> to $serverext -> $server1<br />
rdr on $ext_if proto tcp from any      to $serverext -> $server0<br />
<br />
#  this is required to access the local servers from localhost:<br />
pass  in  quick on lo0 inet    from 127.0.0.0/8 to 127.0.0.0/8<br />
pass  in  quick on lo0 inet    from any to <trusted><br />
<br />
#<br />
pass  in  on $ext_if proto { tcp, udp } from any to $ext_if port 80 keep state<br />
pass  in  on $ext_if proto { tcp, udp } from any to <server> port 80 keep state<br />
<br />
<br />
/usr/local/rang*/conf/acl 中的文件定义了用户的来源IP列表,每个IP一行<br />
<br />
本地的服务可以在定义在这些IP上,端口可以设置为其他的;<br />
127.0.0.10 port 80"    # apache<br />
127.0.0.11 port 80"    # ftpd<br />
127.0.0.12 port 80"    # smtp<br />
127.0.0.13 port 80"    # pop3<br />
<br />
遮掩,随着 三个文件 /usr/local/rang1/conf/acl /usr/local/rang2/conf/acl
/usr/local/rang3/conf/acl 中指定的IP的不同,用户访问 80
端口获得的服务也不相同,可以是apache,ftp,smtp,pop3;也可以是同一个服务器的不同实例,比如多个配置不同的ftp服务器。<br />

页: [1]
© 1999-2008 EvilOctal Security Team