OpenVPN 远程穿越内网(网桥方式)

OpenVPN 穿越内网已有很久的历史了,但是在网上大多数文章都没有详细或者准确的论述。

简单的配置可以让openvpn远程连接某台计算机,但是如果需要跨越外网连接某个私网,需要额外的配置,通常,tun方式适合用route来解决,而tap方式则适合用bridge来实现。

本文就bridge实现内网访问的方法做些简介。

1、环境:

服务器端:Ubuntu 10.04 Server,双网卡,一个网卡接外网,静态IP,另一网卡接内网,静态IP=192.168.5.1。

客户端:MS Windows XP,通过adsl路由接外网,网卡在内网由路由器的dhcp分配地址。

2、服务器端安装、配置

安装就很简单啦,登录ubuntu服务器,先 sudo -i 获取root权限,然后 apt-get install bridge-utils openvpn 即可。

配置,首先要建立一个网桥:

编辑 /etc/network/interfaces,我用的是vi来打开的

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
 iface eth0 inet static
 address 61.xxx.xx.xx
 netmask 255.255.255.0
 
auto eth1
iface br0 inet static
 address 192.168.5.1
 netmask 255.255.255.0


从中可以看出,接外网的是eth0,内网的是eth1,外网的不需要变动,我需要的是建立一个网桥并且把eth1放到桥中:

auto br0
iface br0 inet static
 address 192.168.5.1
 network 192.168.5.0
 netmask 255.255.255.0
 bridge_ports eth1
 bridge_fd 9
 bridge_hello 2
 bridge_maxage 12
 bridge_stp off

iface eth1 inet manual
 up ifconfig $IFACE 0.0.0.0 up
 up ip link set $IFACE promisc on
 down ip link set $IFACE promisc off
 down ifconfig $IFACE down

保存之后,先让这新的配置生效:/etc/init.d/networking restart

稳妥起见,让新的配置正常运行:

ifconfig eth1 down; ifconfig eth1 up; ifconfig br0 down; ifconfig br0 up


至此,网桥搭建完毕并已启动,接下来就创建 OpenVPN 的服务端配置文件了, vi /etc/openvpn/server.conf

local 61.xxx.xx.xx
port 443
proto tcp
dev tap0
up "/etc/openvpn/up.sh br0 tap0"
down "/etc/openvpn/down.sh br0 tap0"
ca /etc/ssl/certs/myca.crt
cert /etc/ssl/certs/mysvr.crt
key /etc/ssl/private/mysvr.pem
dh /etc/ssl/private/dh1024.pem
tls-auth /etc/ssl/private/ta.pem 0
port-share 192.168.5.1 8443
server-bridge 192.168.5.1 255.255.255.0 192.168.5.100 192.168.5.179
;push "dhcp-option DNS 8.8.8.8"
;push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
comp-lzo
user nobody
group nogroup
persist-key
persist-tun

client-to-client
status /var/log/openvpn-status.log
log         /var/log/openvpn.log
verb 3

保存,另创建两个脚本:

#!/bin/sh
# up.sh

BR=$1
DEV=$2
/sbin/ifconfig $DEV promisc up
/usr/sbin/brctl addif $BR $DEV


#!/bin/sh
# down.sh

BR=$1
DEV=$2
/usr/sbin/brctl delif $BR $DEV
/sbin/ifconfig $DEV down

保存后,使其具有可执行权限:chmod 755 /etc/openvpn/up.sh /etc/openvpn/down.sh

将其余文件 myca.crt、mysvr.crt、mysvr.pem、dh1024.pem、ta.pem 复制到适合的路径下,最后启动 OpenVPN:

/etc/init.d/openvpn start


3、客户端安装、配置

下载 OpenVPN 的Windows版本,直接运行安装,同时把OpenVPN-GUI也一起安装了。我选择安装在 D:\Program Files\OpenVPN 目录下。

在 D:\Program Files\OpenVPN\config 下创建 client.ovpn:

client
proto tcp
dev tap
dev-node TAP-0
remote 61.xxx.xx.xx 443
resolv-retry 2
nobind
persist-key
persist-tun
ca "D:\\Program Files\\OpenVPN\\myca.crt"
cert "D:\\Program Files\\OpenVPN\\mycli.crt"
key "D:\\Program Files\\OpenVPN\\mycli.pem"
;remote-cert-eku "TLS Web Server Authentication"
tls-auth "D:\\Program Files\\OpenVPN\\ta.pem" 1
comp-lzo
verb 3

保存,在网络连接那里找到有 OpenVPN 创建的那个网络连接改名为 TAP-0,将文件myca.crt、mycli.crt、mycli.pem、ta.pem复制到适合的地方。

最后,双击桌面上的 OpenVPN-GUI 快捷方式,系统托盘中多了一个小图标,右键点击这个图标,点“连接”。

稍等一下,图标变成绿色表示连接成功,现在,你可以用 ping 命令试一下是否可以远程访问 192.168.5.xxx 网中的其他电脑了。

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭