论坛风格切换切换到宽版
  • 7547阅读
  • 4回复

OPENWRT安装OPENVPN SERVER的故事和笔记 [复制链接]

上一主题 下一主题
离线ba7ib
 
发帖
4569
只看楼主 倒序阅读 0楼 发表于: 2012-12-05
参考文献:
http://www.openwrt.org.cn/bbs/forum.php?mod=viewthread&tid=365
http://translate.google.com/translate?hl=zh-CN&sl=zh-CN&tl=en&u=http%3A%2F%2Fwiki.openwrt.org%2Fdoc%2Fhowto%2Fvpn.openvpn
http://downloads.openwrt.org/backfire/10.03.1/
http://downloads.openwrt.org/snapshots/trunk/

序:
  接某位老大的要求,要在远程访问某网络内的USB SERVER,经过测试该USB SERVER采用的是广播UDP的方式进行连接和通信,因此常规的OSI三层PPTP VPN无法进行广播的转发,只有选用能二层的VPN服务器:OPENVPN的TAP模式
当然,要配置一个OPENVPN SERVER在WINDOWS和LINUX下一点难度都没有,网上大把的教程,但老大的要求是不能使用电脑,想到的只好用路由器了。
  接着就是寻找能实现OPENVPN的路由器了,以前的经验是要有4M ROM以上并能刷DD-WRT VPN版的能实现OPENVPN功能,但老大给了一只TP-LINK MR3420路由器进行实验折腾,经查资料这个路由虽有4M ROM和32M RAM,但主控芯片是AR7241,DD-WRT只有STD版,没有VPN功能,尝试刷了这个DD-WRT版本后,发现ROM只剩几十K的空间了,无法再装上OPENVPN的包,一下子就判了这个路由死刑。接下来就四处搜寻合适可用的路由了。
  偶然间发现这个MR3420路由原来还可以刷OPENWRT,马上投入了另一轮折腾当中。第一次刷的是标准的OPENWRT 10.03.1,似乎这个OPENWRT的ROM小一点能省点空间,刷完后看有400K的空间,正在高兴中,但接下来又发现这点空间还是不够安装OPENVPN和相关的包,继续折腾,发现这个ROM里有些已带的包是没用的,应该可以删去,在手工删掉一些包后发现路由可用的ROM空间并没有增加,放狗后知道这个内核把路由器的ROM刷成squashfs模式,这种模式是一种保护模式,删包只是在启动时不加载而已,并没有真正从ROM中删去,要真正删去,需要刷jffs2模式的ROM,在OPENWRT的backfire标准ROM里也有提供jffs2模式的ROM,下载开刷就是了。刷完就兴高采烈地去删,删得正爽,空出了600K的空间,完了想以最干净的ROM去安装那个OPENVPN,reboot命令敲了,等了N久,还是没看到路由能正常起来,无论从LAN、WAN、WIFI口都找不到路由了,看样子路由变成砖头了,但看路由的灯好像在正常的闪,说明路由的bootload是正常的,估计通过TTL线也许能救回来,但手头上没有TTL线,万能的那个宝就发挥作用了.....此处省略若干万字......
   第二天下午,TTL线到货了,开路由看到有个什么错误,估计是删错了某个包,网络部分没起来,马上刷回原厂ROM,重启证明路由的电路一切安好。
   看样子这个标准版的OPENWRT jffs2 ROM也无法实现OPENVPN的空间需求,没有死心,继续放狗...再省略若干千字...又找到了一个类似开发版的OPEVWRT,叫trunk版,这个版的squashfs模式ROM极小,只有2M,而且squahfs不会真删包,折腾起来保险一点,不想再TTL刷啊,那个很麻烦的。开刷trunk版的openwrt,呵呵,居然刷完后有1.1M的ROM空间,安装OPENVPN绰绰有余,太高兴了,唯一不好的是这个ROM不带WEB界面,全部需要手工配置,也许这就是能省出空间的原因吧。至此,剩下的工作就是手工配置相关的各种参数了,...又省略若干字...,终于完成了老大交待的任务。

下面就是除了刷机以外的配置记要了,当作笔记记号一下。不欢迎本文内容转发,要转发的请只发本帖地址,要看就来hellocq.net上看,呵呵,当作广告。

1、首先需要配置好OPENWRT网络,能上网,配置文件全在/etc/config/里
2、opkg update    更新所有的包信息
3、opkg install openvpn    安装openvpn相关的包,会自动安装openssl zlib等辅助包,空间大约要占900K左右
4、在/etc/openvpn/里增加几个crt证书文件:ca.crt  dh1024.pem  server.crt(这个文件最重要,保证不被非法读取,权限600) server.key,至于证书的生成,网上一堆的教程,建议在你的电脑上去干,就不需要在路由器里安装easyrsa的工具包了,节省空间很重要
5、在/etc/rc.local文件里增加把openvpn用的tap0网卡在系统启动时就能绑定起来:
     cd /tmp
     openvpn --mktun --dev tap0
     brctl addif br-lan tap0
     ifconfig tap0 0.0.0.0 promisc up
6、要注意系统的时间校正很重要,可以修改/etc/config/system文件,里面的config timeserver 'ntp'一段,要改为option enable_server '1'
7、修改/etc/config/openvpn文件,按里面的说明去旧#或增加#吧
8、不知为何我的路由总是没有dns设置,所以在/etc/rc.local增加了一句:echo nameserver 203.80.96.10 >> /etc/resolv.conf
9、 修改/etc/config/firewall配置,增加一段:
    config rule
       option 'target' 'ACCEPT'
       option 'dest_port' '1194'
       option 'src' 'wan'
       option 'proto' 'tcpudp'
       option 'family' 'ipv4'
10、启动和自动启动openvpn命令:
      /etc/init.d/openvpn start
      /etc/init.d/openvpn enable
11、动态DNS安装:
    opkg install ddns-script
    配置ddns见: /etc/config/ddns.conf
73!
  de BA7IB k
    ba7ib@hellocq.net     http://bg7ib.yeah.net

点击这里给我发消息
I am here.
企鹅
离线BH1DIY
发帖
1089
只看该作者 1楼 发表于: 2012-12-20
访问 USB server 要费这么大的劲么?
离线m6sig
发帖
3332
只看该作者 2楼 发表于: 2013-01-06
这玩意不太和谐

楼主最好把证书的部分也放上来,服务端配置文件还有客户端配置文件我都看晕了
CS: M6SIG   LOC: JO01
新浪微博:@熊猫阿B0
不再更新的旧数据: http://t.cn/RhrIAYe

手机用操作证考试题库电子书:http://www.hellocq.net/forum/read.php?tid=335634

7193 4316 2092 1316 6516 0115 9980 http://www.hellocq.net/forum/read.php?tid=346333

希望中国业余无线电有将自己的44/8资源用到实处的那一天!实现最现代化的业余无线电应急通信骨干!
离线ba7ib
发帖
4569
只看该作者 3楼 发表于: 2013-01-06
回 BH1DIY 的帖子
BH1DIY:访问 USB server 要费这么大的劲么? (2012-12-20 15:22) 

是的,现在的USB SERVER都是跑的UDP广播,CLIENT端收不到广播就连不上USB SERVER,所以一定要搞个2层的VPN
73!
  de BA7IB k
    ba7ib@hellocq.net     http://bg7ib.yeah.net

点击这里给我发消息
I am here.
企鹅
离线ba7ib
发帖
4569
只看该作者 4楼 发表于: 2013-01-06
回 m6sig 的帖子
m6sig:这玩意不太和谐[表情]
楼主最好把证书的部分也放上来,服务端配置文件还有客户端配置文件我都看晕了 (2013-01-06 07:04) 

放上来大家一哄而上了,老大那根AD就过元旦了
73!
  de BA7IB k
    ba7ib@hellocq.net     http://bg7ib.yeah.net

点击这里给我发消息
I am here.
企鹅