初入树莓派3----打造无污染路由器对抗DNS与http劫持

部分内容转载,亲自实践过可行。

设置路由器及对抗dns污染

https://story.tonylee.name/2016/03/31/yong-shu-mei-pai-da-zao-wu-xian-zhong-ji-ke-xue-shang-wang-lu-you-qi/

对抗http劫持

 http://www.williamlong.info/archives/4181.html  

对抗http劫持github 地址

https://github.com/lehui99/ahjs5s

(科学上网内容不在此讨论,理论上ss可以直接扶墙,请自行实践。)

——————————分割线——————————

原理:

DNS劫持是通过设置两个 无污染的DNS来解决,中科大和熊猫dns。

http劫持是通过把一个完整的HTTP请求拆分到几个数据包中,在isp上运营商无法检测到完整的http数据包。可以解决一般的http劫持,具体原理详情见作者github。

效果:

dns污染不用说了,中科大的dns解析还是相当快的。

http劫持  b站的插广告基本解决。(吐槽:校园网宽带,电信出口。弹博彩广告,投诉工信部、互联网管理中心解决了,开始弹美的电饭锅广告了。)

——————————分割线———————————

硬件:树莓派3  (自带wifi)   网线x1(连路由器用,你还有一个无线网卡直接无视。)

前期准备:树莓派初始化完成,可以连上SSH和远程桌面,开启了root用户的远程登陆。

最终效果:树莓派利用自带wifi连接路由器,通过网线连接电脑提供网络服务。网线可以换成一个无限网卡。

教程开始:

1更改WIFI国别

树莓派默认使用英国,直接的影响就是,可能某些5G信道会搜索不到,

编辑

/etc/wpa_supplicant/wpa_supplicant.conf

更改countryCN。

2.连接WIFI

连接windows远程桌面CMD执行mstsc命令,输入树莓派的ip地址。登陆,输入root和root密码。树莓派桌面右上角wifi图标,输入wifi密码链接即可。

利用iwconfig命令查看wifi配置是否已经加载,用ifconfig来查看是否分配到IP。将SSH与远程桌面的登陆ip换成树莓派wifi网卡对于IP地址。

3.固定接口名称

固定接口名称.插入WIFI适配器时,系统会随机分配哪个是wlan0,哪个是wlan1。因为两个适配器不一样,会导致运行在上面的配置可能没办法生效。因此,我们必须让系统记住WIFI适配器使用的接口名称。

编辑新增文件

/etc/udev/rules.d/10-network.rules

内容如下:

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="wlan0"  

注意其中的mac地址,设置为你的设备的mac地址。获得mac地址,可以使用命令ip link

重启系统后,再插入设备,就会绑定接口名称。

3.更改eth0(有线网卡)的IP

编辑文件/etc/network/interfaces,将eth0的配置改为如下

1 auto eth0
2 iface eth0 inet static
3     address 192.168.3.1
4     netmask 255.255.255.0

完成后重启路由

sudo  reboot

一定注意要完整的复制代码替换否则不起作用!!

验证输入 ifconfig 查看 eth0 对应ip地址是否为 192.168.3.1。此时电脑的以太网状态—详细信息 对应ip地址应该为 192.168.3.xxx

4.安装dnsmasq来设置DHCP服务
有线网络使用192.168.3这个网段

使用命令sudo apt-get install dnsmasq,编辑/etc/dnsmasq.conf,注意更改如下几段:

1 #配置监听地址
2 listen-address=127.0.0.1,192.168.3.1
3 #配置DHCP分配段
4 dhcp-range=192.168.3.50,192.168.3.150,12h
5 dhcp-range=192.168.4.50,192.168.4.150,12h  

运行命令sudo service dnsmasq restart来启用

5.开启包转发

Linux系统默认关闭了IP包转发,因此不能做路由器。所以需要先打开包转发

编辑/etc/sysctl.conf,去掉以下属性前的注释:

1 # Uncomment the next line to enable packet forwarding for IPv4
2 net.ipv4.ip_forward=1  

运行来启用

sudo sysctl -p

之后运行

sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE  

来启用wlan0端口的NAT.

6.安装iptables-persistent

防火墙规则重启后就丢失了,为了能够规则开机自动加载,我们可以使用iptables-persistent。

用命令

sudo apt-get install iptables-persistent

来安装该组件,根据其提示进行初次设置(一路确认)。

该组件默认会将防火墙规则保存到/etc/iptables/rules.v4中。

你可以使用如下命令保存和读入规则:

1 #保存现有规则
2 sudo service netfilter-persistent save
3 #读取并应用先有规则
4 sudo service netfilter-persistent reload  
7.建立无污染DNS

以前都需要使用chinadns等项目,现在基本上都直接使用中科大的DNS,直接无污染。

在/etc/dnsmasq.conf,加入如下规则

1 no-resolv
2 #中科大DNS
3 server=202.38.93.153
4 server=202.141.162.123
5 #熊猫DNS
6 server=182.254.158.191
7 server=120.27.30.176
8 #阿里DNS(备用)
9 server=223.5.5.5

重启dnsmasq

1 sudo service dnsmasq restart

可以用dig t.co测试一下。

8.安装Anti-Hijack Socks5 Server 

以下简称ahsjs5s:

ahsjs5s将发出的HTTP请求拆分到多个数据包中的原理抑制HTTP劫持。

需要Python环境Python2.7、3.4、3.5测试成功。

首先 git到本地

git clone  https://github.com/lehui99/ahjs5s

修改 config.json内容如下

1 #ahsjs5s Socks5端口 改为1081不与ss冲突
2 server_port:1081
3
4 #拆分HTTP请求的单包大小,默认10(字节),推荐20到50之间。默认单包大小下有些网页视频无法播放,30正常。
5 send_packet_size:30

执行

1 #进入ahsjs5s文件夹
2 cd  /root/ahsjs5s/
3 #开始执行py脚本,无视关闭ssh与否。
4 nohup python main.py config.json &

至此防http劫持的本地服务器就搭建完成了。

现在如果不想再折腾的可以直接使用 Socks5,代理端口192.168.3.1 :1081。

还在欲求不满想要全局代理的 往下看!

9.安装redsocks

redcocks相当于代理的代理,它控制着本地运行的所有代理。流量被转发到redcocks,由它决定该走那个下级代理出去。

执行

1 sudo apt-get install redsocks

来安装软件,之后编辑/etc/redsocks.conf,更改其中的redsocks部分如下

1 redsocks
2    {
3     local_ip = 0.0.0.0;
4     local_port = 12345;
5     ip = 127.0.0.1;
6    #放劫持端口
7     port = 1081;
8    }

使用命令来启动软件

1 sudo service redsocks start

检查redsocks和ahsjs5s对应端口是否成功监听。

1 netstat -an|grep 1081
2 netstat -an|grep 12345
10.导入防火墙规则
 1 sudo iptables -t nat -N SHADOWSOCKS
 2 #不转发常用本地ip
 3 sudo iptables -t nat -A SHADOWSOCKS -d 0.0.0.0/8 -j RETURN
 4 sudo iptables -t nat -A SHADOWSOCKS -d 10.0.0.0/8 -j RETURN
 5 sudo iptables -t nat -A SHADOWSOCKS -d 127.0.0.0/8 -j RETURN
 6 sudo iptables -t nat -A SHADOWSOCKS -d 169.254.0.0/16 -j RETURN
 7 sudo iptables -t nat -A SHADOWSOCKS -d 172.16.0.0/12 -j RETURN
 8 sudo iptables -t nat -A SHADOWSOCKS -d 192.168.0.0/16 -j RETURN
 9 sudo iptables -t nat -A SHADOWSOCKS -d 224.0.0.0/4 -j RETURN
10 sudo iptables -t nat -A SHADOWSOCKS -d 240.0.0.0/4 -j RETURN
11 #将tcp请求转发到12345端口
12 sudo iptables -t nat -A SHADOWSOCKS -p tcp -j REDIRECT --to-ports 12345
13 #执行
14 sudo iptables -t nat -A OUTPUT -p tcp -j SHADOWSOCKS
15 sudo iptables -t nat -A PREROUTING -p tcp -j SHADOWSOCKS  

然后保存规则

1 sudo service netfilter-persistent save 
11.开机启用防火墙规则

iptables-persistent可以开机加载防火墙规则。但是因为防火墙规则中,有使用到redsocks的端口12345,

启动顺序不同,很可能redsocks还没有启动,防火墙规则先加载了,所以会导致防火墙规则加载失败。

因此,我们需要把规则加载放入/etc/rc.local中:

1 iptables-restore < /etc/iptables/rules.v4  

至此有一个对抗DNS污染和http劫持的树莓派路由器就搭建完毕了。

运营商劫持应该已经解决了90%(吐槽:校园网电信出口劫持没个完,投诉校园网与电信互相扯皮)

				
时间: 2024-11-10 05:26:52

初入树莓派3----打造无污染路由器对抗DNS与http劫持的相关文章

初入树莓派1----安装系统+进入SSH

为了更好的从事程序员事业.填坑linux.为学弟打下第一手资料.留下linux培训教材-- -------实际就是为了搭个路由器///玩玩.... 入了树莓派3b +电源+外壳+sd卡---300大洋--------肉疼 树莓派3b的耗电量还是挺大的推荐买个2A以上的电源. ////////////////////////////////////分割线/////////////////////////////////////////// 树莓派系统安装+进入命令行 树莓派支持 数十款操作系统 一

初入树莓派2----常规初始化+远程桌面

启用root用户----sudo 太麻烦... 在命令行下执行 1 sudo passwd root 执行后输入两遍你要设定的root密码, 1 sudo passwd –unlock root 解锁root账户! 但还是无法登陆怎么办? sudo nano /etc/ssh/sshd_config 找到PermitRootLogin without-password改为PermitRootLogin yes Ctrl + X . Y . 回车 保存 sudo reboot 愉悦的使用root用

致初入职场的兄弟姐妹

致初入职场的兄弟姐妹   我很喜欢电影<燃情岁月>中的那句台词--"有些人能够听见自己内心的声音,非常的清楚,他们依循着自己的内心来行事.这些人变得疯狂,或者成为传奇--"(Some people hear their own inner voices with great clearness and they live by what they hear. Such people become crazy, or they become legends. )     这是

【Xbox one S】开箱&amp;开机&amp;初入坑心得

再来一发水贴,先上产品标准照镇贴: 前言 身为一个资深单机游戏玩家,常年混迹在PC平台,但内心深处一直对主机有种迷之向往,感觉那才是单机游戏的正处之地,坐沙发上拿着手柄对着电视跌宕起伏才是正确的游戏姿势.80后的机友大概都有小时候跟小伙伴坐地上双打小霸王的愉快记忆,儿时的记忆总是那么深刻,任凭岁月和社会如何磨灭,总有些感觉想要找回,所以很难说现在淘来一台游戏机有几分是为了当下的娱乐,几分是为了找到当年的感觉.当然了,今天的PC也完全可以让你坐沙发拿手柄看电视甚至玩着相同的游戏,但就凭它叫游戏机,

程序员初入职场如何快速成长

近期收到很多的朋友留言关于程序员初入职场如何快速成长,因为在it行业中,新的技术在不断的更新,如果你不充分利用有限的时间,在未来的竞争中该如何成长.针对这个问题,下面将给出三条比较有实际意义的建议. 培养自己的沟通能力 作为程序员大部分的时间都是和电脑进行沟通,但是我们要想把一个项目做好,沟通能力很重要,因为一个项目会涉及很多方面的,有些知识你可能不具备,但是其他的同事可能很精通,这个时候,沟通就显得尤为重要.说起沟通,建议先学会和你的上级领导沟通,最好做到一对一的沟通,有效的沟通可以让你少走很

纯手工打造linux路由器

对由器比较了解的朋友都知道,很多专业级的路由器,也就是用linux系统来做的,那既然如此,如何使用linux主机打造一个路由器了.其实也不难,但我们得首先搞楚路由器的工作原理,说白了路由器也就是两个不同的网络之间转发数据之用的.如果没有路由器,只能在各自的网络内互相通信,跨网络就访问不了了.因为它们之间是相互隔离的,必须要有一个桥梁才能让它们之间正常来往.今天就给大家分享如何使用两台linux主机来打造一台路由器. 一.环境需求 1.两台双网卡主机 2.操作系统:安装Centos7.2 二.路由

初入码田--ASP.NET MVC4 Web应用之创建一个空白的MVC应用程序

初入码田--ASP.NET MVC4 Web应用开发之一  实现简单的登录 初入码田--ASP.NET MVC4 Web应用开发之二 实现简单的增删改查 2016-07-29 再次之前,需要一台电脑(- ̄▽ ̄)-,以及Visual Studio 2013或者更高版本,SQL Sever数据库(暂时不用) 新建项目 下面会出现选择模板选项(我们选择的是MVC模板) 其中,在创建MVC模板时会有身份验证选项.可选择添加的文件夹和核心引用(Web Form和Web API)以及单元测试选项 身份验证分

0x00linux32位汇编初入--前期准备

0x00汇编初入--前期准备 一.汇编工具 在linux平台下常用的编译器为as,连接器为ld,使用的文本编辑器为vim,汇编语法为att 以下是一些工具: addr2line 把地址转换为文件名和行号 ar 创建,修改和展开文件存档 as 汇编器 c++filt 还原c++符号过滤器 gprof 显示程序简档信息 ld 把目标代码文件链接 nlmconv 把目标代码转换为Netware loadable Module格式 nm 列出目标文件中的符号 objcopy 复制和翻译目标文件 objd

初入&#39;C&#39;,以做一个例题有感。

题目:写一个函数返回参数二进制中 1 的个数 方法1: 我自己写的,运用'%'和'/',感觉挺简单的. int count_one_bit(int num) { unsigned int count=0; while(num) { if(num%2==1) count++; num=num/2; } return count; } int main() { int n = 0; int count = 0; scanf("%d", &n); count = count_one_