因为休息在家, 就想了点事情给自己弄弄. 一来是有事情研究不会太无聊, 二来呢一直一来Bash都属于我不太擅长的领域, 通过折腾可以多学点怎么玩.
所以呢, 趁着自己有空, 就把家里的翻墙配置彻底优化了一下, 可以保证自己最大程度得使用舒适.
背景呢是手上有2台纯有线的路由, 一台是RB450G, 朋友送的, 一台是Ubnt的ERL3, 这是自己在升级到100M宽带的时候自己买的.
在这2货之前呢, 我一直都是IPv6直接挂到He的6to4的Tunnel上实现Google等支持IPv6的访问了, 不过问题就是IPv6毕竟还是小众的, youtube这种就算能访问也不能看片子, 所以用途就很小.
在使用了ERL3以后还是延续了原来的部署方式, 并没有特意去搞太多因为大部分时候我只要有Gmail跟Google就满足了其实.
不过在帮朋友在Azure上部署了一套SS并且他用Asus梅林固件的路由器完成了家用的自动翻墙以后, 我忽然觉得其实路由翻墙也不错嘛, 尤其是其实实现方式比我认为的还是容易多了.所以决定折腾一下.
因为朋友用上了R7000以后把ROS的RG450G送给我了, 所以我觉得先折腾一下这个, 毕竟ROS真心资料比较容易找.
ROS的配置可以使用WinBOX来完成, 当然如果会命令行会更好, 因为命令行其实逻辑性更容易理解一点.很多时候反而是GUI上的配置比较难理解.
基本的思想其实很简单, 就是放弃国内的DNS(因为国内所有的DNS在解析国外被墙的域名的时候必然被污染), 使用国外的DNS并且让DNS从VPN上直接出国而不走国内路由的, 否则DNS的解析结果会直接被污染.
所以我们首先需要搞一个VPN.
我个人使用的是搬瓦工的VPS: https://bandwagonhost.com/aff.php?aff=5802
最近能买到的比较便宜应该只有Los Angeles的2.99刀每月的套餐. LA的DC是搬瓦工比较快的那个, 东部的基本不行.
在起了VPN以后, 我们在VPS上起个VPN, 搬瓦工如果使用centos的话是有自动部署脚本的, 可以直接起OpenVPN.
不过为了我自己用起来方便我其实还是起了PPTP, 可以直接搜自动安装脚本去自动安装, 当然也可以自己手动装.
在VPN server端搞定以后, ROS这端就直接起一个VPN的Interface: 新建PPTP(或者SSTP,OVPN等等)客户端连接:
, 然后输入VPS的服务器IP, 端口号等需要的信息:
只要信息正确, VPN Link会自动建立.
不过为了要能正常通信, 我们需要在ROS上建立一个新的SNAT, GUI的位置防火墙, NAT页里面.
新建一个SNAT的类型, 把out interface改成VPN的接口, action 改成masquerade, src address 改成自己的内网IP段就行了.
CLI比较好理解其实, 例如:
/ip firewall nat
add action=masquerade chain=srcnat comment=”” disabled=no src-address=192.168.1.0/24(自己的本地IP段)
这样VPN的路径就通了.然后我们需要相关的路由来知道流量:
首先我做了一条给8.8.8.8 使用的路由, 这样可以保证我使用的DNS从VPN出去而不是被GFW污染一圈:
/ip route add dst-address=8.8.8.8 gateway=Bandwagong(VPN接口的名字) disabled=no check-gateway=ping
这样DNS就解决了, 然后我们需要把我们需要翻墙的流量到入VPN, 这样就能完成翻墙了.
这里就有问题了, 因为ROS是怎么知道那些需要去VPN的呢?
我们需要整理一个IP List告诉ROS, 然后给去到这些IP的流量做个标记, 再做一条路由让这些流量从VPN出去而不是本地.
具体怎么搞我们下一篇继续.
一条评论
使用pptp容易被封呀