一次作死折腾路由器的经历
preface
今天晚上,设置了一下路由器的防火墙,本来想添加一些规则让实验室的网络变得更加有趣,最后炸了,差点路由器都登不进去。。
我来简单重现一下事情的经过,在网上看到一个路由器修改 iptables 的教程,觉得很有意思,便想着用自己的路由器也来搞一个,添加点自定义规则来玩玩
有关 iptables 的具体原理我还没有去看,但这是 Linux 下常用的防火墙设置,在以后应该会补充相关的底层原理,总之,我的第一个想法是给局域网中的某些主机屏蔽一些域名不让其访问,比如很多人蹭我的网,所以为了保证网络质量我就想屏蔽他们使用 YouTube 等视频网站,这个在网上找到了现成的规则,直接就拿来用了(好像也也没什么卵用,只对百度试过,国外网站好像过滤不了)
iptables -I FORWARD -s 192.168.1.144 -d www.baidu.com -j DROP
这一行规则就让我的 iPad(局域网 ip 地址为 192.168.1.144)不能访问百度,因为收到对百度的访问请求就会直接把请求给 DROP 掉,可以用这行规则进行域名屏蔽
甚至还可以直接让某个 ip 直接断网,也就是将他发出的所有请求都给丢弃
iptables -I INPUT -s 192.168.1.144 -j DROP
然后我又想玩得更有趣一点,就是不管局域网主机输入了什么网址,都会将请求转发到我们想要的一个网页上,这个同样也在网上找到了现成的规则,但不知道为什么脑子抽了,然后我就拿我的路由器后台登录地址来做实验,这条规则的意思就是只要局域网有主机登陆了 192.168.1.1 这个网址就会跳转到 www.google.com ,将这条规则添加进去,然后重启防火墙,准备试验一下
iptables -t nat -A PREROUTING -d 192.168.1.1 -j DNAT --to-destination www.google.com
iptables -t nat -A POSTROUTING -d www.google.com -j SNAT --to-source 192.168.1.1
然后我就凉了,应该是这条规则出了问题,最后的结果就是我再也登不上路由器的管理面板了,然后我就想赶紧把这条规则给删除了,好在我的终端是通过 ssh 连接着路由器的,然后就上网找到了自定义的防火墙的配置文件的保存位置,叫做 /etc/firewall.user
,编辑器打开,赶紧把刚刚新加的防火墙规则给去除了
root@OpenWrt:~# vim /etc/firewall.user # This file is interpreted as shell script. # Put your custom iptables rules here, they will # be executed with each firewall (re-)start. # iptables -I INPUT -s 192.168.1.175 -j DROP #ok
# 省略十几条。。。
然后再更新一下防火墙
root@OpenWrt:~# /etc/init.d/firewall restart
哦豁,还是没卵用,登不上,这下该怎么办啊,那这样的话我就再也管理不了路由器了,还有最后一招,我想着修改路由器的 ip 地址,这样应该就能绕过新设定的规则了。网上也搜索到了相关的代码,如下
root@OpenWrt:~# uci set network.lan.ipaddr=192.168.2.2
root@OpenWrt:~# uci commit network
root@OpenWrt:~# ifup lan
输入完上面的几行代码之后,终端仿佛已经卡死了,动也不动,然后网络也断了,这时我就重启了路由器,过了大概有四五分钟吧,显示有网络了,然后我就用新的 ip 地址 192.168.2.2 登陆 web 端的管理面板,终于看到了熟悉的画面,赶紧把之前的防火墙规则给删了然后再将 ip 修改为之前的 ip ,这一步就可以直接在 web 面板进行了,因为之前是 web 登不了所以我们才去终端修改的
其实这一天我还不止折腾了防火墙,还折腾了里面的 dnsmasq ,但都没怎么成功,因为对他们的原理并不是很熟,所以感觉理论真的很重要,工具千千万,懂得背后的原理才是王道,以后想折腾还是得先把理论给学好
reference
https://www.jianshu.com/p/7f91b05fa8c6
https://yejian.co/change-openwrt-default-ip-address/
相关文章
- 记一次哈啰物联网平台规则引擎kafka消息积压线上事故复盘
- 记一次前端文本对齐的问题
- 记一次FFMPEG的安装
- 河南投车堵决口的卡车司机发声:再有一次 还会投车
- 查询mysql引擎:一次成功的尝试(查询mysql的引擎)
- 一次编码WebShell bypass D盾的分析尝试
- 兄弟连:一次MySQL学习之旅(兄弟连mysql)
- 掌握MySQL 5.5:一次完整指南(mysql5.5手册)
- 的学习经历MySQL数据库学习之旅一次经验丰富的学习经历(c 关于mysql数据库)
- MySQL占用3306端口一次令人恼火的经历(3306被mysql占用)
- 本地Redis缓存清理一次行动,持久效果(本地redis缓存清除)
- 记录Oracle批量插入多条记录的方法(oracle一次插入多条)
- Oracle两分钟闪亮登场90秒后的一次创新体验(oracle 90秒后)