搜索
bottom↓
回复: 13

请问如何用路由器搭设代理?

[复制链接]

出0入0汤圆

发表于 2014-6-15 16:50:17 | 显示全部楼层 |阅读模式
有朋友已经可以随时肉身双向穿墙了。但到墙内时手机电脑均不能访问那些不存在的网站。
以前帮他搞过视频监控,可以在墙内通过动态域名访问,证明他家里IP是外网IP。

现在可不可以用OpenWrt搭个代理,实现你懂的功能?
还有,如何做一个网页登录认证?


我现在找到的资料:

1、
srelay比较简单,而且负载也比较低,但只支持socket。
tinyproxy支持http,配置也不麻烦,但是不支持https。
squid功能强大,支持https,但是配置起来很麻烦


2、
网络上关于Linux下架设openvpn的资料很多,openwrt也是linux,所以基本设置大同小异,但关于openwrt下的vpn网络环境设置中文资料很少!现将自已的设置过程贴出,仅供大家参考!
一、openvpn简介
      OpenVPN是一个用于创建虚拟专用网络加密通道的软件包,最早由James Yonan编写。
  OpenVPN允许参与建立VPN的单点使用预设的私钥,第三方证书,或者用户名/密码来进行身份验证。它大量使用了OpenSSL加密库,以及SSLv3/TLSv1协议。
  OpenVPN能在Linux、xBSD、Mac OS X与Windows 2000/XP上运行。它并不是一个基于Web的VPN软件,也不与IPsec及其他VPN软件包兼容。 Openvpn的优点或者是区别于pptp的是:设置灵活,功能强大,支持自定义端口,支持tcp或udp协议,支持http和sock代理,支持加密遂道。
    openvpn网址:http://openvpn.net/     建议新手先安装win版openvpn熟悉相关设置和使用!
详见:http://forum.51nb.com/viewthread ... ge%253D1&page=1

二、openvpn安装设置
    openwrt的软件包中包含有最新版的openvpn 2.1.1 ,web界面安装就行了!
(注意:BCM6358系列现有openwrt0414中文版需要单独重新安装admin提供的kmod-tun,详见: http://www.openwrt.com.cn/bbs/vi ... &extra=page%3D1  五楼,kmod-tun安装后需要重启路由器才能启用,后续新版要看具体情况确定需不需要单独安装kmod-tun)
    openvpn的配置有点对点、路由、桥接等多种模式,用户验证方式有共享密钥、动太证书、用户口令等多种方式,本次教程只介绍最简单的静态密钥+桥接模式配置!!好了,现在步入正题。
1、 首先确认openwrt的wan、lan正常使用中,安装虚拟网卡驱动模块kmod-tun和openvpn,openvpn-easy-rsa是用于生成密钥和证书,如果需要用到数据压缩功能传输,请安装lzo模块。我自已是以前就在winxp下使用win版openvpn生成了密钥和证书(以前在TOMATO下架设VPN),然后拷入到/etc/openvpn目录中使用,如果你需要在openwrt下生成密钥和证书,就请安装openvpn-easy-rsa部件,使用方法详见附件!


2、 启用虚拟网卡tap0并加入br-lan网桥。 这个是关键地方,这种方法是openwrt推荐的方法,也是网络设置最简便的。
原理是将虚拟网卡tap0接口加入已经建立的br-lan网桥中,所有经tap0接入的连接全部视同lan接入,无需重新配置nat、forward等。
root@OpenWrt# brctl show                ##显示现有网桥情况


    bridge name        bridge id                STP enabled        interfaces
    br-lan                8000.007404037df3        no                eth1.0
                                                                     wlan0

复制代码
3、建立网桥启动脚本:/etc/openvpn/startupscript,内容如下:

    #!/bin/sh
    #/etc/openvpn/startupscript
    # OpenVPN Bridge Config File
    # Creates TAP devices for use by OpenVPN and bridges them into OpenWRT Bridge
    # Taken from http://openvpn.net/bridge.html
    # Define Bridge Interface
    # Preexisting on OpenWRT
    br="br-lan"
    # Define list of TAP interfaces to be bridged,
    # for example tap="tap0 tap1 tap2".
    tap="tap0"
    case "$1" in
            up)
                    # Make sure module is loaded
                    insmod tun
                    # Build tap devices
                    for t in $tap; do
                        openvpn --mktun --dev $t
                    done
                    # Add TAP interfaces to OpenWRT bridge
                    for t in $tap; do
                        brctl addif $br $t
                    done
                    #Configure bridged interfaces
                    for t in $tap; do
                        ifconfig $t 0.0.0.0 promisc up
                    done
            ;;
            down)
                    for t in $tap; do
                        ifconfig $t 0.0.0.0 down
                    done
                    for t in $tap; do
                        brctl delif $br $t
                    done
                    for t in $tap; do
                        openvpn --rmtun --dev $t
                    done
                    rmmod tun
            ;;
             *)
                    echo "$0 {up|down}"
            ;;
    esac

复制代码
修改脚本执行权限:chmod +x /etc/openvpn/startupscript
然后执行一次:
/etc/openvpn/startupscript  up

就可以将tap0加入到br-lan桥中了。
root@OpenWrt# brctl show      ###显示现有网桥情况,多了个tap0 .

    bridge name        bridge id                STP enabled        interfaces
    br-lan                8000.007404037df3           no                eth1.0
                                                                     wlan0
                                                                     tap0

复制代码
每次重启路由后,你需要重新执行一次脚本才能正常启用openvpn,你也可以修改一下将启动脚本放到/etc/init.d/,增加/etc/rc.d启动项,做到开机自动启动。更简单的办法是:将/etc/openvpn/startupscript  up 加入到/etc/rc.local中开机自动启动网桥部分!!

ok,openvpn的网络环境基本完成。
4、生成共享密钥
使用如下命令生成静态密钥:
openvpn --genkey --secret static.key
openvpn的所有配置文件都在etc/openvpn这个目录下!生成的static.key位于/etc/openvpn,你可以将这个文件复制到客户端使用。静态密钥文件由ascii组成,就像下面这样:

    -----BEGIN OpenVPN Static key V1-----
    e5e4d6af39289d53
    171ecc237a8f996a
    97743d146661405e
    c724d5913c550a0c
    30a48e52dfbeceb6
    e2e7bd4a8357df78
    4609fe35bbe99c32
    bdf974952ade8fb9
    71c204aaf4f256ba
    eeda7aed4822ff98
    fd66da2efa9bf8c5
    e70996353e0f96a9
    c94c9f9afb17637b
    283da25cc99b37bf
    6f7e15b38aedc3e8
    e6xxxxxxxxxxxxx63
    -----END OpenVPN Static key V1-----

复制代码
5、openvpn服务端配置
/etc/openvpn/my-vpn.conf

    dev tap0
    port 443
    proto tcp-server
    comp-lzo yes
    keepalive 10 60
    verb 3
    secret /etc/openvpn/static.key
    #ca /etc/openvpn/ca.crt
    #dh /etc/openvpn/dh1024.pem
    #cert /etc/openvpn/server.crt
    #key /etc/openvpn/server.key
    #status-version 2
    log /etc/openvpn/openvpn0.log
    status /etc/openvpn/server.status
    #tls-auth /etc/openvpn/ta.key 0
    # Custom Configuration
    #auth-user-pass-verify /etc/openvpn/checkpsw.sh via-env
    #client-cert-not-required
    #username-as-common-name

复制代码
6、启动openvpn服务 (启动前记得将防火墙的wan相应端口打开,这里是443 )
openvpn --daemon --config /etc/openvpn/my-vpn.conf
PS:
openwrt本身自带Luci-openvpn配置页面,UCI配置vpn服务参数差不多,我只是图简单手工修改配置文件,用指定配置文件来启动openvpn。

5月5日更新:    增加luci设置openvpn服务方法:

5-2-1、web界面安装luci-app-openvpn,在-服务--openvpn里设置:
a、直接利用custom_config调用自定义配置文件;
b、修改sample_server配置内容或新建vpn0配置:如图:


5-2-2、通过luci修改custom_config、sample_server或vpn0的配置相关内容如下( 或者直接修改/etc/config/openvpn文件内容):


    config 'openvpn' 'custom_config'
            option 'config' '/etc/openvpn/my-vpn.conf'      #自定义调用前面的my-vpn.conf ,暂不用此配置      

    config 'openvpn' 'sample_server'                           
            option 'port' '443'
            option 'dev' 'tap0'
            option 'ca' '/etc/openvpn/ca.crt'
            option 'cert' '/etc/openvpn/server.crt'
            option 'key' '/etc/openvpn/server.key'
            option 'dh' '/etc/openvpn/dh1024.pem'
            option 'keepalive' '10 120'
            option 'comp_lzo' '1'
            option 'persist_key' '1'
            option 'persist_tun' '1'
            option 'log' '/etc/openvpn/openvpn.log'
            option 'verb' '3'
            option 'enable' '0'                                                #0.不启用
            option 'proto' 'tcp'
            option 'client_to_client' '1'
            option 'dev_type' 'tap'

    config 'openvpn' 'sample_client'
            option 'enable' '0'                                                #0.不启用
               option 'client' '1'
            option 'dev' 'tun'
            option 'proto' 'udp'
            list 'remote' 'my_server_1 1194'
            option 'resolv_retry' 'infinite'
            option 'nobind' '1'
            option 'persist_key' '1'
            option 'persist_tun' '1'
            option 'ca' '/etc/openvpn/ca.crt'
            option 'cert' '/etc/openvpn/client.crt'
            option 'key' '/etc/openvpn/client.key'
            option 'comp_lzo' '1'
            option 'verb' '3'

    config 'openvpn' 'vpn0'
           option 'enable' '1'                                # 1.启用
           option 'port' '443'
            option 'dev' 'tap0'
            option 'comp_lzo' '1'
            option 'secret' '/etc/openvpn/static.key'
            option 'verb' '3'
            option 'dev_type' 'tap'
            option 'proto' 'tcp-server'
           option 'persist_key' '1'
            option 'persist_tun' '1'
            option 'log' '/etc/openvpn/openvpn.log'
            option 'keepalive' '10 60'

复制代码
5-2-3、OK,openvpn服务配置完成,重新启动路由器opevpn服务就会自动启动,或者手工启动vpn:
/etc/init.d/openvpn start
用ps命令可以看到openvpn进程了,说明成功启动!

    3790 root      3000 S    /usr/sbin/openvpn --syslog openvpn(vpn0) --writepid /
    3791 root      1308 R    ps

复制代码
7、客户端的配置
win版openvpn客户端配置文件: /programs/openvpn/config/client.ovpn


    #tls-client
    dev tap0
    secret key.txt      ##这是前面生成的共享密钥文件,你可以复制到客户端自行改名
    ;http-proxy-retry
    ;http-proxy xxx.xxx.xxx.xx 80 authfile ##代理服务器地址和端口+自动验证代理用户口令文件
    proto tcp-client
    remote 192.168.3.1 443                     ##路由器的IP地址(动态域名)和端口,
    keepalive 10 60
    verb 3
    float
    #ca ca.crt
    #cert cfan.crt
    #key cfan.key
    #tls-auth ta.key 1
    #ns-cert-type server
    comp-lzo
    #auth-user-pass

复制代码
使用这个配置文件启动openvpn客户端连接,就可以在任何地方上网连上openvpn,并获得内网lan网段的IP,自由访问内网资源!!!!
至于这么复杂架设个openvpn有什么作用?大家baidu一下就知道啦!自已发挥想像吧!
提示一下:利用vpn可以突破各种内网封锁、自由上网,运气好你还可以免费使用chinanet-wlan(网上有收费的vpn,其实也是改造过的openvpn)
20100731更新:
注意:按照本教程设置后,客户端连接vpn,正常情况下应该就能通过VPN通道上外网了,可以登录www.ip138.com验证你的外网IP,这也就是所谓的vpn番墙技术。
部分网友反应:客户端连接VPN正常,但不能通过VPN上外网,这是win双网关的路由问题,当同时有两个本地连接时,所有网络连接默认走的会是缺省网关路由,如果你的缺省网关是本地连接(即非vpn网关),那么就无法通过vpn连接上外网的。解决办法是手工调整路由跃点数值来控制在 IP 流量路由中首先使用的网络接口,即调整缺省网关:
WinXP通过ipconfig /all,可以看到两个本地连接都有自已的网关,通过route print 查看路由表信息,如下:
Network Destination        Netmask          Gateway       Interface  Metric
0.0.0.0          0.0.0.0      192.168.1.1     192.168.1.8       25                          #本地连接的路由
0.0.0.0          0.0.0.0     192.168.2.1  192.168.2.205       30                          #vpn连接的路由
......
Default Gateway:       192.168.1.1                #缺省网关

最后一行 192.168.1.1    #这是缺省的本地连接网关,需要将默认网关改为VPN的网关。方法如下:
将客户端PC"本地连接"的TC/IP属性中-高级-自动跃点计数改为手动,设为:30或大于30(这个数值根据你的实际值确定) !
(或者也可以将客户端PC"本地连接2"(tap32)的TC/IP属性中-高级-自动跃点计数改为手动,设为:25或小于25)
也就是说默认网关是根据较小的跃点数网关确定首选路由的!!
再查看route print ,路由表需要变成:

0.0.0.0          0.0.0.0      192.168.1.1     192.168.1.8       30
0.0.0.0          0.0.0.0     192.168.2.1  192.168.23.205       30
....
Default Gateway:       192.168.2.1

此时就应该可以通过vpn通道上外网了。
或者设置本地连接为静态IP,不设网关,手工添加本地路由,设置本地连接2(VPN)为自动获取IP、DNS,效果是一样的!
手工添加本地路由:route add 0.0.0.0 mask 0.0.0.0 192.168.1.1 metric 30

有关“跃点计数”知识的简介:
http://baike.baidu.com/view/1781753.htm?fr=ala0_1_1
http://winsvr.org/info/info.php?sessid=&infoid=61

至此openvpn共享密钥+桥接模式的配置完成!
多用户证书验证和text用户口令验证在openwrt下测试通过! 其他模式大家可以自行研究!!!

附上自已收集的OpenVPN 配置全集.pdf

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出300入477汤圆

发表于 2014-6-15 17:46:16 | 显示全部楼层
用一个美国的机器开VPN就行了。
你从任何地方连过去,都可以自由访问墙外的网站。
要省事就用Win Server(随便2003或2008都可),内置了VPN,简单的打开就可以用了。
淘宝上租一个VPS也不贵

出0入0汤圆

发表于 2014-6-15 20:38:37 | 显示全部楼层
单位里普通员工不能上外网,但是发现通过代理是可以上外网的。也一直在寻求如何通过路由器上的代理可以上外网。不知道圣手能不能看到这个贴子来指点一下。

出0入0汤圆

发表于 2014-6-15 20:39:55 来自手机 | 显示全部楼层
redroof 发表于 2014-6-15 17:46
用一个美国的机器开VPN就行了。
你从任何地方连过去,都可以自由访问墙外的网站。
要省事就用Win Server( ...

如果win server在路由器之后呢? 用DMZ吗?

出0入0汤圆

 楼主| 发表于 2014-6-15 20:55:29 来自手机 | 显示全部楼层
redroof 发表于 2014-6-15 17:46
用一个美国的机器开VPN就行了。
你从任何地方连过去,都可以自由访问墙外的网站。
要省事就用Win Server( ...

他人已经在外定居了,长开电脑费电。反正家里开着路由器,就问问有没有方案。

出0入0汤圆

 楼主| 发表于 2014-6-15 20:56:37 来自手机 | 显示全部楼层
erpao 发表于 2014-6-15 20:39
如果win server在路由器之后呢? 用DMZ吗?

我觉得应该是NAT

出0入42汤圆

发表于 2014-6-15 21:00:46 | 显示全部楼层
开了路由器就简单了, 既然在考虑装代理了, 那这个路由器基本还是linux的咯.

直接ssh过去, 在ssh选项里面开个隧道就可以构造一个sock4的代理了.  现在的chrome什么的装个proxy插件, 一键切换代理什么的.  手机基本也可以针对热点配置全局代理.

别的感觉都太麻烦了点儿

出0入663汤圆

发表于 2014-6-15 21:41:55 | 显示全部楼层
简单点就SSH Tunnel,复杂点就PPTP或者OpenVPN,什么squid那些都是扯淡,不是给路由器跑的。

出0入0汤圆

发表于 2014-6-15 21:44:23 | 显示全部楼层
openwrt也是可以goagent的

出0入0汤圆

 楼主| 发表于 2014-6-16 08:59:18 | 显示全部楼层
gzhuli 发表于 2014-6-15 21:41
简单点就SSH Tunnel,复杂点就PPTP或者OpenVPN,什么squid那些都是扯淡,不是给路由器跑的。 ...

谢谢大师指点。

出0入0汤圆

 楼主| 发表于 2014-6-16 09:00:45 | 显示全部楼层
Jordan?? 发表于 2014-6-15 21:44
openwrt也是可以goagent的

路由器已物理穿越了。

出300入477汤圆

发表于 2014-6-16 09:23:05 | 显示全部楼层
kalo 发表于 2014-6-15 20:55
他人已经在外定居了,长开电脑费电。反正家里开着路由器,就问问有没有方案。 ...

其实需要的就是一个处在国外的VPN Server
随便你用什么系统,只要装出一个正确的VPN就行了
客户端的系统拨号连接到这个VPN,就不再受墙的限制了。
注意,简单的在国外开个HTTP代理不行,我们的“墙”还是很聪明的,只有带加密的VPN才能躲过。
如果VPN Server在路由器内部,要在路由器上映射一个1723端口,这是PPTP的标准端口
很多成品路由器其实已经自带了VPN功能
如果你的路由器不带VPN,又不想麻烦的配置,那么给国外电脑装一个WinServer系统就自带VPN Server了
Linux我不懂,不发表意见

出0入42汤圆

发表于 2014-6-16 11:15:20 | 显示全部楼层
gzhuli 发表于 2014-6-15 21:41
简单点就SSH Tunnel,复杂点就PPTP或者OpenVPN,什么squid那些都是扯淡,不是给路由器跑的。 ...

很多人不知道ssh tunnel这个东西, 唉...

出0入134汤圆

发表于 2014-6-16 12:01:21 | 显示全部楼层
我刷的TT已经带goagent了。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-20 01:53

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表