在openwrt dnsmasq DHCP中为客户端分配不同的网关和DNS | 旁路由 禁止上网

环境:openwrt + dnsmasq + PS4/Switch
问题:为路由器下的设备分配不同的网关和DNS,禁止局域网设备上网
解决办法:修改dnsmasq配置文件

背景:Openwrt 的DHCP服务是使用dnsmasq实现的,他可以给内网的客户端设备发放IP,现在有一个需求,个别客户端需要发放不同的网关和DNS,以实现DNS劫持,旁路由,甚至是禁止上网的需求

解决过程:修改dnsmasq的配置文件


1.修改openwrt dhcp配置文件:

直接修改dnsmasq的配置文件

 vi /etc/config/dhcp

讲解:
1.config host 是指对特定主机的DHCP客户端配置
2. option tag ‘no_wan’ 是指额外发放标签名称为no_wan特殊的dhcp_option
3. dhcp option3 是指网关,6是指DNS
4. 先配置tag的内容,在将标记设置到host中,重启即可

config tag 'no_wan'
    option dhcp_option '3,192.168.31.2 6,192.168.31.2'
    option force '1'

config host
        option name 'ps4'
        option mac 'e8:9e:b4:73:f7:69'
        option ip '192.168.31.248'
        option tag 'no_wan'
#重启DHCP服务
/etc/init.d/dnsmasq restart

2.客户端测试

在客户端冲重新取得IP地址测试一下,发现网关和DNS不再是.1了
在这里插入图片描述

3.进阶应用:

我们可以使用这个方法,将网关和DNS指派为一个不存在的IP 或者直接为0.0.0.0
这样客户端就无法上网了,比配置防火墙策略要简单

好的,以下是使用 Docker 搭建 OpenWrt 容器作为旁路由DNS 服务器,其他容器从 OpenWrt 容器进行网络访问的步骤: 1. 安装 Docker,这里假设您已经安装好了 Docker。 2. 搜索并下载 OpenWrt 镜像,可以使用以下命令: ``` docker pull openwrtorg/rootfs:latest ``` 3. 创建并启动一个 OpenWrt 容器,可以使用以下命令: ``` docker run -itd --name openwrt --privileged openwrtorg/rootfs /sbin/init ``` 4. 进入 OpenWrt 容器,可以使用以下命令: ``` docker exec -it openwrt /bin/bash ``` 5. 配置 OpenWrt旁路由DNS 服务器,具体步骤可以参考 OpenWrt 官方文档。以下是示例配置: - 将 WAN 口设置为 DHCP 客户端,从上游路由器获取 IP 地址和 DNS 服务器地址。 ``` uci set network.wan.proto=dhcp uci commit network ``` - 将 LAN 口设置为静态 IP 地址,例如设置为 192.168.1.1/24。 ``` uci set network.lan.proto=static uci set network.lan.ipaddr=192.168.1.1 uci set network.lan.netmask=255.255.255.0 uci commit network ``` - 启用 DHCP 服务器,分配 IP 地址给其他容器,例如分配 IP 地址范围为 192.168.1.100 至 192.168.1.200。 ``` uci set dhcp.lan.start=100 uci set dhcp.lan.limit=100 uci set dhcp.lan.leasetime=12h uci commit dhcp ``` - 配置 DNS 服务器,将 DNS 查询转发到上游 DNS 服务器。 ``` uci set dhcp.lan.dhcp_option="6,192.168.1.1" uci set dhcp.lan.dns=223.5.5.5 # 这里以腾讯公共 DNS 服务器为例 uci commit dhcp ``` 6. 配置 Docker 容器的网络为桥接模式,这样可以将 Docker 容器与 OpenWrt 容器连接到同一个网段。可以使用以下命令: ``` docker network create --driver=bridge --subnet=192.168.1.0/24 mybridge docker network connect mybridge openwrt ``` 7. 在其他容器中配置网络,使其可以通过 OpenWrt 容器进行网络访问。可以使用以下命令: ``` docker run -itd --name mycontainer --network mybridge myimage /bin/bash ``` 其中,myimage 是您要运行的容器镜像,mycontainer 是容器的名称。 8. 在其他容器中配置 DNS 服务器为 OpenWrt 容器的 IP 地址,例如设置为 192.168.1.1。 ``` echo "nameserver 192.168.1.1" > /etc/resolv.conf ``` 现在,其他容器就可以通过 OpenWrt 容器进行网络访问和 DNS 解析了。希望对您有所帮助,如果您还有其他问题,请随时提出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值