openwrt vpn自动分流翻墙

将openwrt的相关配置记录下来,防止下次找不到。理论上而言,vpn连接上之
后的设置都是通用的。我用的是支持pptp的vpn。

  • 安装pptp模块
    opkg update
    opkg install ppp-mod-pptp kmod-pptp kmod-mpe kmod-gre
    
  • 添加vpn网络接口及配置
    vi /etc/config/network
    config interface 'tun0'
            option ifname 'pptp-vpn'
            option proto 'pptp'
            option server 'x.x.x.x'
            option username 'xxxx'
            option password 'xxxx'
            option peerdns '0'
            option metric '2000'
    
    config route
            option interface 'tun0'
            option target '1.2.3.4'
            option gateway '10.3.4.1'
    
    config route
            option interface 'tun0'
            option target '2.3.0.0'
            option netmask '255.255.0.0'
            option gateway '10.3.4.1'
    
    

    第一段是添加一个名字为tun0的网络接口,拨号协议时pptp。peerdns为0表示
    使用默认的dns服务器,不是用vpn获取到的dns服务器。由于我只是指定固定的ip
    通过vpn访问,所以就这样配置了。

    第二段和第三段是指定通过vpn的网络规则,分别对应单独的一个IP和一个范
    围的IP.

  • 如果vpn服务器不支持加密的话,需要注释掉以下文件的一行:

    vi /etc/ppp/option.pptp
    #mppe required,no40,no56,stateless
    
  • 经过上面的设置,重启完路由器,路由器应该就可以连上vpn服务器了,并且,在路
    由器中检查流量的走向的时候,将会是正确的,但局域网中的电脑却还是默认的路
    径。
  • 使用以下的命令,使局域网中的电脑也可以按照路由器的规则进行分流:

    iptables -I FORWARD -o br-lan -j ACCEPT #允许br-lan端口流量被转发
    iptables -I FORWARD -o tun0 -j ACCEPT #允许tun0端口流量被转发
    iptables -t nat -I POSTROUTING -o tun0 -j MASQUERADE #tun0出口的流量SNAT出去
    
  • 设置防火墙规则,这一步是否必要没去验证,反正我是一路设置下来,到了最后一
    检查可以了,就这么用着了。

    vi /etc/config/firewall
    config zone
            option forward 'ACCEPT'
            option output 'ACCEPT'
            option name 'vpn'
            option network 'tun0'
            option masq '1'
            option mtu_fix '1'
            option input 'REJECT'
    
    config forwarding
            option dest 'vpn'
            option src 'lan'
    
    
  • 以上大部分都可以通过web页面设置,只是通过shell的话我觉得更清楚些,也
    懒得截图额。

    如果vpn服务器是国外的话,那么恭喜咯,局域网中的电脑可以自动按照规则翻
    墙了,当然,你也可以用来做电信和网通的加速使用。

    PS: 相同的文章写两遍就是痛苦啊,明明昨天写了一次,结果在emacs中不小心
    按了将alt将ctrl键用了,弄的找也找不回来。不熟悉的键盘配置就是麻烦啊。

    发表评论

    此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据