如何设置路由器让OpenVPN实现两个局域网互连

2012年4月14日 | 分类: 乱七八糟 | 标签: , , ,

如何通过普通的路由器,实现两个子网的互通?

网络现状如下:

1. 一端有固定的IP,另一端是ADSL拨号上网,没有固定IP
2. 路由器不带有VPN功能,或者说不利用路由器的VPN功能。

网络状况

使用工具:
大名鼎鼎的 << OpenVPN >>

在两端的局域网,分别有两个服务器,用于安装OpenVPN。

左侧:10.0.0.10

右侧:  192.168.111.205

 

路由器配置:

首先,我们需要在路由做一些设置,通常路由器都支持静态路由表的功能,设置如下:
左侧:

右侧:

先不用管 192.168.110.0/24 这个网段,这是预留给PPTP拨号用户的IP段。

通过设置路由器的静态路由表,让左侧子网用户访问192.168.111.0/24这个网段的时候,IP包Forward到安装了OpenVPN的10.0.0.10这台服务器。

让右侧的用户访问10.0.0.0/8这个网段的时候,IP包Forward到192.168.111.205这台安装了OpenVPN的服务器。

好,基本的路由规则现在设置完成,剩下的就是OpenVPN的配置了。

不知道什么原因,ADSL的openvpn数据包会莫名奇妙的被干扰,过一段时间后就会被强制降速,这时候又需要autossh这个利器了。 (北京联通ADSL)

 

在左端client上建立1194端口的SSH隧道:

#cat /etc/rc.local
/usr/local/bin/autossh -M 20010 -f -N -c blowfish -m hmac-md5-96 -L 1194:localhost:1194 root@服务器IP -p 22
将1194端口用ssh tunnel 互通


以下为最简单的openvpn配置方法:

STEP 1. 生成静态key

openvpn –genkey –secret static.key
将这个static.key 分别复制到两端的 /etc/openvpn/目录下

注意:可以选择openvpn不加密,而让ssh tunnel完成加密,如同本文下面描述,不过为了完整性,还是配置了 secret参数。读者要知道此参数实际并没有用处。

 

STEP 2. 配置文件

左端ADSL, openvpn client

#cat /etc/openvpn/client.conf
remote 127.0.0.1 1194 // 通过本地ssh tunnel 1194端口
dev tun
ifconfig 172.8.8.2 172.8.8.1
proto tcp-client
secret static.key
cipher none       // 关闭加密
auth none         // 关闭MAC
persist-key
persist-tun
user nobody
group nobody
keepalive 10 120
comp-lzo
script-security 2
up “up.sh”              // 这里up,down两个脚本,用来配置路由
down “down.sh”          //
#cat /etc/openvpn/up.sh
#!/bin/sh
ip route add to 192.168.110.0/24 via 172.8.8.1 dev tun0
ip route add to 192.168.111.0/24 via 172.8.8.1 dev tun0
#cat /etc/openvpn/down.sh
#!/bin/sh
ip route delete to 192.168.110.0/24 via 172.8.8.1 dev tun0
ip route delete to 192.168.111.0/24 via 172.8.8.1 dev tun0

右端cernet openvpn server

#cat /etc/openvpn/server.conf
dev tun
local 127.0.0.1         // 只需绑定127.0.0.1:1194
ifconfig 172.8.8.1 172.8.8.2
proto tcp-server
secret static.key
cipher none                // 关闭加密
auth none                // 关闭MAC
persist-key
persist-tun
user nobody
group nobody
keepalive 10 120
comp-lzo
up “up.sh”             // 这里up,down两个脚本,用来配置路由
down “down.sh”         //
#cat /etc/openvpn/up.sh
#!/bin/sh
ip route add to 10.0.0.1/8 via 172.8.8.2 dev tun0
#cat /etc/openvpn/down.sh
#!/bin/sh
ip route delete to 10.0.0.1/8 via 172.8.8.2 dev tun0

up down脚本记得chmod +x

来源:http://bullshitlie.blogspot.com/2012/03/openvpn_22.html

======

iGFW博客获德国之声博客大赛“最佳中文博客公众奖”提名 欢迎网友为本博客投票:http://igfw.net/archives/8681

目前还没有任何评论.