TL-ER2260T安装dnsmasq并设置域名劫持

第一步,安装entware

  • 安装entware
    cd /tmp
    wget http://bin.entware.net/armv7sf-k3.2/installer/generic.sh
    sh generic.sh
    
  • 将entware加入环境变量
    修改环境变量:vi /etc/profile
    修改行4 export PATH=/opt/bin:/opt/sbin:/bin:/sbin:/usr/bin:/usr/sbin
    
    如下所示:
    #!/bin/sh
    [ -f /etc/banner ] && cat /etc/banner
    
    export PATH=/opt/bin:/opt/sbin:/bin:/sbin:/usr/bin:/usr/sbin #改这里
    export HOME=$(grep -e "^${USER:-root}:" /etc/passwd | cut -d ":" -f 6)
    export HOME=${HOME:-/root}
    export PS1='\u@\h:\w\$ '
    
    [ -x /bin/more ] || alias more=less
    [ -x /usr/bin/vim ] && alias vi=vim || alias vim=vi
    
    [ -z "$KSH_VERSION" -o \! -s /etc/mkshrc ] || . /etc/mkshrc
    
    [ -x /sbin/arp ] || arp() { cat /proc/net/arp; }
    [ -x /usr/bin/ldd ] || ldd() { LD_TRACE_LOADED_OBJECTS=1 $*; }
    
  • 重新登陆ssh,尝试使用entware安装软件
    opkg update
    opkg install curl
    opkg install drill
    
  • 给entware环境设置自启动
    entware启动脚本:
    vi /etc/init.d/entware
    
    #!/bin/sh /etc/rc.common
    # Copyright (C) 2008-2010 OpenWrt.org
    
    START=99
    
    start() {
    /opt/etc/init.d/rc.unslung start
    }
    
    stop() {
    /opt/etc/init.d/rc.unslung stop
    }
    
    restart() {
    stop
    start
    }
    
    reload() {
    restart
    }
    
  • 保存并启动entware
    chmod +x /etc/init.d/entware
    /etc/init.d/entware enable
    

参考:https://blog.03k.org/post/er2260t_setting.html

第二步,安装dnsmasq

  • 安装dnsmasq-full
    opkg install dnsmasq-full
    
  • 设置dnsmasq
    vim /opt/etc/dnsmasq.conf
    
    取消注释并修改:
    # 设置监听局域网
    listen-address=192.168.1.1,127.0.0.1  # 192.168.1.1 是dns服务器地址
    # 制定域名指向内网IP
    address=/www.yourdomain.com/your-server-ip # www.yourdomain.com是域名,your-server-ip是内网服务器地址
    # 设置上游DNS服务器配置文件路径
    resolv-file=/etc/resolv.conf
    # 修改DNS缓存大小
    cache-size=5000
    
    保存
  • 启动dnsmasq
    如果直接运行dnsmasq会报错:
    dnsmasq: failed to create listening socket for port 53: Address already in use
    
    root@TP-LINK:/usr/sbin# ps | grep dns
    517 root      2852 S    grep dns
    1557 root      1316 S    {tpddnsd} /bin/sh /usr/sbin/tpddnsd
    3383 root      2048 S    /usr/sbin/dnsproxyd
    
    检查发现,这是因为ER2260T自带的dnsproxyd服务已经占用端口,我们需要关闭该服务:
    /etc/init.d/dnsproxy stop
    /etc/init.d/dnsproxy disable
    chmod -x /etc/init.d/dnsproxy # 降低权限,防止开机自启动
    
    然后再执行dnsmasq,打开dnsmasq服务

更多推荐