找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 21652|回复: 51

【原创】OpenWRT Chaos Calmer 使用 ocserv 来提供 virtual**服务

  [复制链接]
本帖最后由 fragranse 于 2016-4-18 19:03 编辑


2016-04-15 初稿
2016-04-18 补充Tunnel all Traffic(全流量) 和 Split Tunnel(隧道分离)部分。


在OpenWRT Chaos Calmer 15.05 通过使用 ocserv 来提供 virtual** 服务,连接到OpenWRT 路由器所在的内网,并访问内网资源。
2016-04-15
之前家里使用的是360的C301路由器,对官方固件的吐槽不再细说,看到坛友的大力推荐,尝试了刷了下OpenWRT,惊为天人,从此深陷其中不可自拔,唯有感谢H大,蝈大。

我现在使用的固件是蝈大的2016-02-27提供的R48808,访问地址如下,这个是 Chaos Calmer 15.05版的OpenWRT
https://www.right.com.cn/forum/thread-146171-1-1.html

最近的需求是:能够在外面通过网络访问家里的NAS资源,并且足够的安全。这种情况只能使用virtual**了。


最简单的virtual**配置应该就是 PPTP virtual**了,找了一些文档和资料,发现OpenWRT的版本从 Barrier Breaker 14.07 升级到  Chaos Calmer 15.05之后,PPTP virtual**已经不再提供官方支持,并且PPTP的TCP 1723端口也被ISP封的厉害。有朋友推荐使用Ocserv,基于OpenConnect的virtual**解决方案,并且可以支持Cisco的Anyconnect 客户端。(Cisco Anyconnect 软件的Moblie版本也可以用于 iOS和 Android 都有下载的,即配置成功后,手机也可以连接virtual**访问家里的资源。)


环境如下:
硬件:Qihoo 360 C301路由器
固件:OpenWrt Designated Driver by 981213 r48808 (OpenWRT Chaos Calmer 15.05)


一、安装 Ocserv
可以通过命令行 或者 luci web界面安装两个软件”ocserv“和”luci-app-ocserv“
1、命令行命令如下:
opkg update
opkg install ocserv luci-app-ocserv
reboot

2、luci web界面
通过:系统——软件包,先刷新,然后搜索”ocserv“和”luci-app-ocserv“,并安装。
安装完成,重启之后,luci 的”服务“界面就会出现”OpenConnect virtual**“选项


二、配置Server端
建议通过luci界面配置,比较直观和容易。
通过“服务”——“OpenConnect virtual**”,进到“服务器设置”的“常规设置”,相关参数如下:
1、Enable Server:打钩表示启动服务。
2、User Authentication:用户认证方式,选择plain,表示使用OpenWRT路由器上面定义的用户名和密码登录virtual**。
3、Firewall Zone:选择Lan
4、端口:默认是443,但如果443被占用(例如开始了https访问luci)就会自动修改为4433,这里可以修改其他想要端口。
5、最大连接数:默认为8,这里的值是设定有个virtual**可以连接进来。
6、Max same Clients:默认为2,这里的值会限定同一个账号能够登录几次。
7、Enable compression:打钩表示启用压缩。
8、Enable UDP:打钩表示启用UDP协议。
9、AnyConnect client compatibility:打钩表示允许 Cisco 的 Anyconnect Client 作为virtual**客户端软件连接。

比较关键的是下面两个参数:
10、virtual** IPv4-Network-Address:
11、virtual** IPv4-Netmask:


这里定义的是virtual**客户端连到内网之后,获得的IP地址的网段范围。可以有两种设置方法:
方法一、virtual** 网段和OpenWRT所在的网段不同,用这种方法要在后面的Routing Table里面添加2个路由网段。
例如:OpenWRT的路由器的IP地址为:192.168.111.1,子网掩码为255.255.255.0
           virtual**的地址可以设置为:192.168.112.0,子网掩码为 255.255.255.0【注意,这里virtual**设置的只是网络号,virtual**服务器将会使用网络的第一个地址,即为192.168.112.1】

方法二、virtual** 网段和OpenWRT所在的网段一样(使用其中某一段子网IP地址),这种情况下Routing Table里面的路由只需要添加一个,但是要启用 所有接口上的ARP代理功能(启用方法参看最后)
例如:OpenWRT的路由器的IP地址为:192.168.111.1,子网掩码为255.255.255.0
           virtual**的地址可以设置为:192.168.111.16,子网掩码为 255.255.255.240【注意,这里的192.168.111.16/28其实是一个网络号,virtual** 服务器将会使用第一个地址,即192.168.111.17/29,virtual** 客户端将使用剩余的其中一个地址18-30,这里的参考配置可以供13个客户端使用】
【再注意,OpenWRT所在的网络的DHCP分配的地址要排除这段里面的IP不分配给客户端16-31,防止IP地址冲突 】


二、配置DNS Server
virtual**线路连接成功之后,因为默认的模式“分离隧道”,所以客户端的DNS Server将会被这里的配置所覆盖。
一般情况下,家里的OpenWRt路由器也承担DNS的功能,所以这里设置为OpenWRT的路由器地址即可。


三、配置Routing table,路由表。
这里的设置的路由表,将会分配给virtual** 客户端,告知virtual** 客户端 通过virtual**线路访问这里定义的路由。
一般情况下,这里只需要添加“virtual**的IP网段”和“OpenWRT所在的网段”。
具体说明,参看上面配置 virtual** IPv4-Network-Address 和 virtual** IPv4-Netmask的两种情况,分别定义的路由表为:
方法一对应的路由表为:
192.168.111.0 255.255.255.0
192.168.112.0 255.255.255.0

方法二对应的路由表为:
192.168.111.0 255.255.255.0

经过测试和研究:
1、如果这里不填写任意网段,virtual** Client 将使用Tunnel all Traffice模式,即设置客户端所有的流量发往OpenWRT,即新增一条默认路由到OpenWRT访问所有网络。
2、如果填写网段,virtual** Clinet将使用 Split Tunnel的分离隧道模式,只有指定的网段流量才通过virtual**房网OpenWRT。
3、virtual** Client不需要添加,会自动发送给客户端。

四、配置拨号用户
当配置了用户认证方法为“plain”,并启用了OpenConnect服务之后,就可以新建用户了。新建用户很简单,只需要定义用户名和密码即可。
在“服务”——“Openconnect virtual**”——“用户设置”——“Available users”



五、配置防火墙,允许从wan访问 virtual**的端口,建立连接。
前面定义的端口为4443,并且允许TCP和UDP两种模式,所以这两个端口都需要允许。
可以通过命令行和luci进行配置。
config rule
        option enabled '1'
        option target 'ACCEPT'
        option name 'Allow SSL virtual** in '
        option family 'ipv4'
        option dest_port '4443'
        option src 'wan'


luci的配置为:网络——防火墙——通信规则:



此时,virtual**可以正常连接进来了,如果只需要连进来配置OpenWRT路由器,到这里已经可以了。
但是如果要访问其他的内网资源都无法访问,就需要以下配置。


六、配置自定义防火墙,允许virtual**的流量访问内网资源。
通过命令行,对/etc/firewall.user 进行编辑,添加以下内容
  1. iptables -A input_rule -i virtual**s+ -j ACCEPT
  2. iptables -A forwarding_rule -i virtual**s+ -j ACCEPT
  3. iptables -A forwarding_rule -o virtual**s+ -j ACCEPT
  4. iptables -A output_rule -o virtual**s+ -j ACCEPT
复制代码
配置完毕之后需要重启防火墙生效。
  1. /etc/init.d/firewall restart
复制代码

或者通过luci进行配置:网络——防火墙——自定义规则,添加上面的内容。

然后去:系统——启动项,里面重启防火墙服务:


这里如果希望不用重启马上看到效果,可以直接在命令行下输入上述4条命令,但是这种方式添加的iptables重启之后就失效。


七、启用 代理ARP
如果virtual** 网段和 OpenWRt网段处于不同的IP网段,无需开启代理ARP。
但是如果为了节省IP要求,将virtual**网段和OpenWRT设置为同一网段IP的情况下,虽然我们从IP的角度看,我们客户端的virtual** IP网段和资源网段处于同一网段,应该可以直接访问。但实际上面,有一个虚拟的virtual**接口,这两个是不同的网段,所以路由其实是不可达的。这个时候如果想要两个网络互通,就必须启用 代理ARP功能,以供virtual** IP网段和资源网段进行互通。这个必须在命令行下面进行配置。
通过telnet或者ssh登录OpenWRT路由器,用vi 编辑 /etc/sysctl.conf :
新增一条:
  1. net.ipv4.conf.all.proxy_arp=1
复制代码
然后重新加载配置,用下述命令:
  1. sysctl -p
复制代码
即可成功。

启用 代理ARP有诸多风险,建议大家还是用不同网段配置virtual** IP和Openwrt网段。

这样,Open Connect virtual**的服务器端就已经配置成功了。
【参看以下的文档说明,据说新版本ocserv-0.10.9-2 package,直接集成这个 代理ARP的选项,所以不需要修改sysctl了。】
https://github.com/openwrt/packages/tree/master/net/ocserv


八、Windows PC连接virtual**的方法
客户端推荐使用 Cisco AnyConnect
Cisco anyconnect的地址可以参看这里:
http://download.csdn.net/download/wangzhpwang/8425331

安装完毕之后,因为我们的域名或者IP是不受CA信任的,所以必须要取消客户端对不信任的服务器的连接。
打开客户端,点击左下角的齿轮


按照下图提示,取消打钩。


然后就可以输入 IP加端口,进行连接;
连接成功之后,有个不信任的提示,点击“Connect Anyway”继续;
输入用户名和密码,有个banner的提示,点击Accept接收;
最后再一次弹出不信任服务器的提示,点击“Connect Anyway”,即可连接成功。

建议OpenWRT绑定DDNS,这样可以使用域名访问了。


九、Ubuntu、iOS、Android的连接virtual**的方法
方法和Windows的大同小异,基本上只要安装好客户端,输入IP(或者域名)加上端口,即可连接成功。


十、注意事项:1、有的时候通过luci修改OpenConnect配置的时候,会发现卡住,这个时候通过命令
netstat -nat
参看端口的时候,发现 4443端口的监听没有,证明服务没有起来,这个时候可以通过命令重启ocserv服务。
/etc/init.d/ocserv reload
或者去 luci的 系统——启动项,去重启ocserv服务。

2、这里有个非常有趣的一个测试结果,如下图:

ping同一个地址,上面是配置到第五步,但是没有添加针对virtual**s0端口的流量放行,所以返回的错误是我的OpenWRT网关提示无法连接到端口。

配置了第六步之后,再次访问我家里网络的资源时候,提示是超时(这是因为我的virtual**网络和内网网络一样,但是没有开启 代理ARP)。这个时候去luci界面的“状态——防火墙”的关于新建的virtual**s+策略的数据包增加了4个,证明防火墙已经放行了。

最后配置第七步之后,可以访问192.168.111.148的资源了。


十一、如果感兴趣,可以直接编辑“编辑模板”服务——OpenConnect virtual**——服务器设置——OpenConnect——编辑模板
这里面的参数会涉及到一些自定义参数,例如banner的提示,还有里面的注释,有利于理解上述各种参数的意义。










本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
好帖,收藏了
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

好帖收藏
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

精彩教程帖。感谢分享!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

有意思
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

可不可以翻公司的墙,代理上网?
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
本帖最后由 fragranse 于 2016-4-17 13:01 编辑

上传下一Cisco AnyConnect的 Windows 客户端,3个压缩包,一共4M多,我只能上传4M的压缩包,所以分两天上传。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

同样是C301的用户帮顶一下,C301确实可玩性不错,我刷了明月固件,另外装了adbyby,中继增强,以后就打算这样用了
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
还是pptp virtual**方便点,不需要客户端就能登录了。

点评

BB 14.07版本的OpenWRT支持PPTP。关于CC15.05版本,我尝试安装: #opkg install kmod-pptp luci-proto-ppp Multiple packages (kmod-pptp and kmod-pptp) providing same name marked HOLD or PREFER. Using lates  详情 回复 发表于 2016-4-17 13:05
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

这个先收藏了,以后再慢慢学习
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
13062678135 发表于 2016-4-17 09:35
还是pptp virtual**方便点,不需要客户端就能登录了。

BB 14.07版本的OpenWRT支持PPTP。关于CC15.05版本,我尝试安装:
#opkg install kmod-pptp luci-proto-ppp
Multiple packages (kmod-pptp and kmod-pptp) providing same name marked HOLD or PREFER. Using latest.
Package kmod-pptp (4.1.13-1) installed in root is up to date.
Package luci-proto-ppp (git-15.347.16478-f1814da-1) installed in root is up to date.

但是根本没有办法启用,并且还没有luci进行参考验证,最终放弃了,才寻找 替代的 ocserv的、

我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
cc15.05.1可以用啊   我一直在用
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

我按照你的教程安装成功后,每次路由器重启 ,ocserv启动不起来,必须手动启动,这是怎么回事啊

点评

设置自启动: /etc/init.d/ocserv enable 或者去LUCI 的系统,启动项里面启动。  详情 回复 发表于 2016-4-18 18:55
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

精致好教程
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
收藏备用,感谢
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-27 10:03

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

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