|
|
原文:
http://tyf.9966.org/discuz/viewt ... &extra=page%3D1
环境简介
2M电信ADSL,带网关、防火墙、DHCP、端口映射等功能的路由器,内网一PC做虚拟服务器
PC单网卡,上安装Debian Sid。安装proftp。
PC上打开PASV端口
PassivePorts 65500 65505
路由器里做65500~65505的端口映射
配置发送给用户的地址信息
MasqueradeAddress tyf.9966.org
重启proftpd
发现proftp将域名转换为当时的外网IP
这时可以PASV模式正常访问
当IP地址改变时,虽然动态域名解析正确,但由于proftp反馈给用户的地址仍然是原来的外网IP,所以PASV模式访问失败。须重启proftpd
问题是如何检测外网IP已经变化,当然是命令行的方式。
这样就可以在shell脚本里侦测外网IP是否变化,如已经变化则重启proftpd。
参考文章:
http://www.donews.net/charlee/archive/2004/12/02/190451.aspx
解决办法
在http的主目录编写反馈客户IP的ip.php脚本
- <?php
- print ( $_SERVER['REMOTE_ADDR']);
- ?>
复制代码
编写检测脚本/etc/qdns
- #!/bin/sh
- mv -f /etc/ip-new /etc/ip-old >/dev/null
- lynx -dump http://www.tyf.9966.org/ip.php >/etc/ip-new
- date >> /etc/qdns.log
- cat /etc/ip-new >> /etc/qdns.log
- oldip=`cat /etc/ip-old`
- newip=`cat /etc/ip-new`
- if [ "$newip" != "$oldip" ];then
- /etc/init.d/proftpd restart >> /etc/qdns.log
- exit
- fi
复制代码
在/etc/crontab里设置,让检测脚本定时运行。你还可以设置一周清理一下qdns.log |
|