davideuler / autoddvpn

Automatically exported from code.google.com/p/autoddvpn
0 stars 0 forks source link

移植到 openwrt 上的方法 #100

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
Hi all,

今天晚上打完副本,闲来无事,研究了一下在 openwrt 
配置自动翻墙。

方法如下,不懂得地方可以参考 ddwrt 的做法。

1. 在 openwrt 上安装 openvpn。方法请自行 google,或参考 openwrt 
wiki。
2. 把所有的 cert, key, conf 等文件传到 /etc/openvpn。conf 
文件参考 ddwrt 
的做法(http://code.google.com/p/autoddvpn/wiki/OpenVPNManualStartUP)。
3. 下载 http://autoddvpn.googlecode.com/svn/trunk/grace.d/vpnup.sh 和 
vpndown.sh,修改 vpsup.sh 里面的 /jffs/ 为 /etc/,然后都放到 
/etc/openvpn,并且赋予执行权限。
4. 在 /etc/config/openvpn 中增加下面内容:

config 'openvpn' 'vpn'
    option 'config' '/etc/openvpn/openvpn.conf' # conf 的文件名别错了
    option 'enable' '1'

5. 防火墙增加两个转发:
iptables -I FORWARD -o br-lan -j ACCEPT
iptables -I FORWARD -o tun0 -j ACCEPT

尝试连接,然后 traceroute 一下看看是否正确。

Original issue reported on code.google.com by f...@wqfw.de on 30 Oct 2011 at 7:35

GoogleCodeExporter commented 9 years ago
dnsmasq 的配置:

在 /etc/config/dhcp 中的 dnsmasq 
里增加如下内容(也可以用web界面配置)

    list 'server' '/google.com/8.8.8.8'
    list 'server' '/facebook.com/8.8.8.8'
    list 'server' '/fbcdn.net/8.8.8.8'
    list 'server' '/twitter.com/8.8.8.8'
    list 'server' '/youtube.com/8.8.8.8'
    list 'server' '/ytimg.com/8.8.8.8'
    list 'server' '/imageshack.us/8.8.8.8'

Original comment by f...@wqfw.de on 30 Oct 2011 at 7:37

GoogleCodeExporter commented 9 years ago
测试了一下,但是遇到问题
openddvpn取默认网关地址是从“OLDGW=$(nvram get 
wan_gateway)”,但是openwrt不使用nvram指令,所以这里根本取不��
�网关地址.脚本里也有多处用到nvram,都是没办法执行的。
我用route | grep default 取到网关地址后,在脚本运行中,default 
gw一直是wan_gateway,但是脚本一结束又变成了vpngw了,不知道为�
��么,现在只能在开机后手工去更改,头痛

Original comment by stim...@gmail.com on 24 Nov 2011 at 2:40

GoogleCodeExporter commented 9 years ago
搞定,原来是VPN服务器上有一条 push "redirect-gateway def1"导致的
在openvpn.conf中加上一条 route-nopull 就OK了! close吧

Original comment by Training...@gmail.com on 13 Dec 2011 at 1:17

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
默认网关可以通过`ip route show | grep 'ppp.*src' | awk '{print 
$1}'`获取,vpnup.sh vpndown.sh 
要修改的地方很多,否则无法正常运行。

Original comment by ocean...@gmail.com on 14 Dec 2011 at 10:38

GoogleCodeExporter commented 9 years ago
是不是每次开启openwrt路由器都需要等大约20分钟 
才可以上翻墙的网站?

Original comment by linjimmyiphone@gmail.com on 5 Jan 2012 at 1:37

GoogleCodeExporter commented 9 years ago
那到底有没有完整的解决方案提供??现在看着你们所说的��
�点不明所以 。。。

Original comment by shundego...@gmail.com on 19 Feb 2012 at 5:36

GoogleCodeExporter commented 9 years ago
另外如果使用的VPN是L2PT或者PPTP的VPN,,那还应该要下载OPENVP
N吗??基础有点弱,刚玩OPENWRT..

Original comment by shundego...@gmail.com on 19 Feb 2012 at 5:38

GoogleCodeExporter commented 9 years ago
当然不用了,l2tp pptp openvpn 
是三种vpn,用其中一个就不用装另外两个。

Original comment by f...@wqfw.de on 19 Feb 2012 at 6:47

GoogleCodeExporter commented 9 years ago
哦,,你的邮件地址是多少??想直接向你咨询一下。。。��
�因为单单从上边的示例还没有解决我的情况。。

我的情况是OPENWRT路由一台,有一个PPTPVPN帐号密码,还没有安
装PPTP 
VPN软件,请问你可以告诉我应该如何配置吗?谢谢。。。

我的邮件:shundegoodfriend#gmail.com

Original comment by shundego...@gmail.com on 19 Feb 2012 at 9:18

GoogleCodeExporter commented 9 years ago
现在我已经在OPENWRT上成功运行PPTP拨号,而且也能上YOUTUBE等��
�站,但因为是全局VPN所以上国内的网站也是用VPN。。

现在我想问一下,如何配置才可以利用AUTODDVPN这个项目?因��
�你们发出的配置都是针对OPENVPN,但我的却是PPTP拨号,还请��
�位大大指点一二,不胜感激

Original comment by shundego...@gmail.com on 19 Feb 2012 at 2:32

GoogleCodeExporter commented 9 years ago
我也用的是OpenWRT, 下面是我自己写的脚本

root@OpenWrt:/# cat /etc/ppp/ip-up.d/teardownwall
teardown_wall() {
        ip route del default via $PPP_REMOTE

        CHKIPSET=$(ipset -L china | wc -l)
        if [ "$CHKIPSET" == "0" ]; then
                ipset -N china nethash --hashsize 16384

                # for IP in $(wget -O - http://www.ipdeny.com/ipblocks/data/countries/cn.zone)
                for IP in $(cat /etc/config/cn.zone)
                do
                        ipset -A china $IP
                done

                ipset -A china 10.0.0.0/8
                ipset -A china 172.16.0.0/12
                ipset -A china 192.168.0.0/16
        fi

        CHKIPSET=$(ipset -L whiteip | wc -l)
        if [ "$CHKIPSET" == "0" ]; then
                ipset -N whiteip iphash --hashsize 128
                for IP in $(cat /etc/config/ip.whitelist)
                do
                        ipset -A whiteip $IP
                done
        fi

        iptables -t mangle -A PREROUTING -p tcp -m set --match-set ! whiteip src -m set --match-set ! whiteip dst -m set --match-set ! china dst -m multiport --dports 53,80,443 -j MARK --set-mark 0xffff
        iptables -t mangle -A PREROUTING -p udp -m set --match-set ! whiteip src -m set --match-set ! whiteip dst -m set --match-set ! china dst --dport 53 -j MARK --set-mark 0xffff

        iptables -t mangle -A OUTPUT -p tcp -m set --match-set ! whiteip src -m set --match-set ! whiteip dst -m set --match-set ! china dst -m multiport --dports 53,80,443 -j MARK --set-mark 0xffff
        iptables -t mangle -A OUTPUT -p udp -m set --match-set ! whiteip src -m set --match-set ! whiteip dst -m set --match-set ! china dst --dport 53 -j MARK --set-mark 0xffff

        iptables -t mangle -A FORWARD -p tcp -m set --match-set ! whiteip src -m set --match-set ! whiteip dst -m set --match-set ! china dst -m multiport --dports 53,80,443 -j MARK --set-mark 0xffff
        iptables -t mangle -A FORWARD -p udp -m set --match-set ! whiteip src -m set --match-set ! whiteip dst -m set --match-set ! china dst --dport 53 -j MARK --set-mark 0xffff

        CHKIPROUTE=$(grep wall /etc/iproute2/rt_tables)
        if [ -z "$CHKIPROUTE" ]; then
                echo "11 wall" >> /etc/iproute2/rt_tables
        fi

        ip route add table wall default via $PPP_LOCAL
        ip rule add fwmark 0xffff table wall priority 1
}

if [ "$PPP_IFACE" == "pptp-wall" ]; then
        teardown_wall
fi

root@OpenWrt:/# cat /etc/ppp/ip-down.d/setwall
setup_wall() {
        iptables -t mangle -D PREROUTING -p tcp -m set --match-set ! whiteip src -m set --match-set ! whiteip dst -m set --match-set ! china dst -m multiport --dports 53,80,443 -j MARK --set-mark 0xffff
        iptables -t mangle -D PREROUTING -p udp -m set --match-set ! whiteip src -m set --match-set ! whiteip dst -m set --match-set ! china dst --dport 53 -j MARK --set-mark 0xffff

        iptables -t mangle -D OUTPUT -p tcp -m set --match-set ! whiteip src -m set --match-set ! whiteip dst -m set --match-set ! china dst -m multiport --dports 53,80,443 -j MARK --set-mark 0xffff
        iptables -t mangle -D OUTPUT -p udp -m set --match-set ! whiteip src -m set --match-set ! whiteip dst -m set --match-set ! china dst --dport 53 -j MARK --set-mark 0xffff

        iptables -t mangle -D FORWARD -p tcp -m set --match-set ! whiteip src -m set --match-set ! whiteip dst -m set --match-set ! china dst -m multiport --dports 53,80,443 -j MARK --set-mark 0xffff
        iptables -t mangle -D FORWARD -p udp -m set --match-set ! whiteip src -m set --match-set ! whiteip dst -m set --match-set ! china dst --dport 53 -j MARK --set-mark 0xffff

        ip route del table wall default
        ip rule del priority 1
}

if [ "$PPP_IFACE" == "pptp-wall" ]; then
        setup_wall
fi

/etc/config/cn.zone 
是中国IP段,从http://www.ipdeny.com/ipblocks/data/countries/cn.zone下载

/etc/config/ip.whitelist 是白名单,在这个名单里的ip不翻墙
root@OpenWrt:/# cat /etc/config/ip.whitelist
192.168.0.134
192.168.0.135
207.46.197.32
192.168.0.250

/etc/config/network 的设置:
config 'interface' 'wall'
        option 'proto' 'pptp'
        option 'server' 'vpn.xxxxx.com'
        option 'username' 'xxxxx'
        option 'password' 'xxxxxx'
        option 'defaultroute' '0'
        option 'auto' '1'

如果你还在使用multiwan, 可能需要修改脚本以兼容multiwan的mark
如果你使用 http://code.google.com/p/autoddvpn/issues/detail?id=120 
提到的CDN加速,需要把上面脚本的53端口删掉,否则的话需要
指定DNS为国外的服务器(如 8.8.8.8)
如果使用的默认固件的话,可能需要安装iproute2 ipset模块

Original comment by hack...@aim.com on 23 Feb 2012 at 5:14

GoogleCodeExporter commented 9 years ago
请问这个是 graceMode 还是什么 模式

Original comment by flatlan...@gmail.com on 27 Mar 2012 at 6:44

GoogleCodeExporter commented 9 years ago
我开了个工程,关于在 openwrt 下完美使用 autoddvpn 
楼主如果有兴趣,可以考虑把这个集成进去,以后用 openwrt 
的人就方便了

工程在: http://code.google.com/p/openwrt-smarthosts-autoddvpn/

欢迎使用 openwrt 的朋友交流

Original comment by yuqiang0...@gmail.com on 8 Dec 2012 at 5:01