依赖软件安装
1.安装php-cli软件,openwrt请执行opkg update&& opkg install php-cli安装php脚本解析器。
2.安装tcpdump命令,openwrt请执行opkg install tcpdump
3.安装screen命令,openwrt请执行opkg install screen
新建脚本pcap.php
#!/usr/bin/php-cli
<?php
$domain_forward=[""];//请设置需要另外设置网关的域名,多个的话,按数组格式“,”隔开
$gateway='';//请设置另外一个网络出口,也就是网关
$forward_map=[];
$stdin = fopen('php://stdin', 'r');
while ($line = trim(fgets($stdin))) {
if(strpos($line, "[udp sum ok]") === false)continue;
if(strpos($line, "q: A? ") === false)continue;
$arr=explode(" ",$line);
$c=count($arr)-1;
if($arr[$c-2]!=="A")continue;
$ip=$arr[$c-1];
$domain=trim($arr[$c-3],'\.');
echo $domain."->".$ip."\n";
if(in_array($domain,$domain_forward)){
forward($domain,$ip);
}
}
fclose($stdin);
function forward($domain,$ip){
global $forward_map;
global $gateway;
if ($forward_map[$domain]==$ip){return;}
exec("ip route add $ip/32 via $gateway>/dev/null");
echo "[route] add route $ip via $gateway\n";
$forward_map[$domain]=$ip;
}
?>
新建run.sh脚本
#!/bin/sh
cd $(dirname $0)
tcpdump -i eth2 -A "udp port 53 and (udp[2:2] >=192) and host !multiRouter.lan " -s0 -l -nn -vv|./pcap.php
赋予run.sh脚本执行权限"chmod +x run.sh"
在/etc/rc.local 添加命令,实现开机自启
screen -dms mDomainRoute "run.sh脚本路径"