Pfsense软路由定时限制迅雷下载速度

单位的NAT代理服务器原来是用一台FreeBSD,不过后来配置pf很麻烦,并且达不到限制迅雷下载速度的目的,前天装了个Pfsense,使用以后能够限制迅雷等P2P下载软件的速度。不过也不能一直限制速度,如果想要下载电影的话晚上可以开放速度,反正也不会影响其他人。traffic shaper管理里面倒是有个手工更改是否启用的选项,但是每天都要定期点击也不方便,最好能够自动运行。

pfsense有一个cron的package,装了以后就能在webGUI里面直接设置定期启动的任务,我可以制定两个任务,分别是:晚上11开放下载速度;早上8点限制下载速度。但是怎么才能做到使用shell开放或者限制下载?直接调用pfctl的话,不知道配置文件在哪里。pfsense是使用php来管理整个系统的,php的文件在 /usr/local/www目录下面,每个php都引用了guiconfig.inc这个文件,更改配置的代码如下:

require("guiconfig.inc");
if ($_POST['submit']) {
$pconfig = $_POST;
$config['shaper']['enable'] = $_POST['enable'] ? true : false;
write_config();
}

$config[‘shaper’][‘enable’]是用了控制pfsense中的traffic shaper(流量限制)是否启用,如果设定后调用一write_config()就能生效了。我的思路是在/usr/local/www分别建立enable.php和disaple.php两个文件,enable.php的内容如下:

require("guiconfig.inc");

$config['shaper']['enable'] = FALSE;

write_config();

同理可以建立enable.php:

require("guiconfig.inc");

$config['shaper']['enable'] = TRUE;

write_config();

如何在cron里面调用这两个文件又成了问题,用

/usr/local/bin/php -q /usr/local/www/disable.php

的话,会报错,好像是pfsense的auth认证失败,那么我就直接用fetch来

fetch http://username:password@127.0.0.1/disable.php

username和password是你的pfsense的管理员和密码。

我后来有建立了两个sh分别用于开启和关闭,如下图:


在cron里面分别创建两个任务,分别fetch两个文件就OK了。

Leave a Reply

Your email address will not be published. Required fields are marked *