主页

依赖软件安装
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脚本路径"

版权属于:WANYL
作品采用:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
0

目录

来自 《linux或者软路由根据域名动态执行route命令添加出口》
评论

WANYL

博主很懒,啥都没有
125 文章数
0 评论量
11 分类数
126 页面数
已在风雨中度过 3年357天9小时3分