Ubuntu8.04下OpenVPN详细配置

发表时间:2010-04-06 17:15:48    分类: Ubuntu    2551 阅读   评论(0)
标签: Ubuntu, OpenVPN

一、服务器环境及目的

服务器两块网卡,一块连接外网,一块连接内网
外网IP: 202.205.6.42
办公内网IP:172.16.1.0/24

目的:
通过VPN在Internet环境下接入办公内网,可以访问内网指定段内的计算机,并且客户端能通过VPN通道访问Internet

二、服务端安装过程

1.安装openvpn

sudo apt-get install openvpn

2.设置认证机构,产生证书
在Ubuntu中大致这样操作,将目录 /usr/share/doc/openvpn/examples/easy-rsa/2.0 复制的你的HOME目录(这个目录包含了一系列很方便的脚本),修改vars使其符合你的实际情况(国家、省份、城市、公司、机构、邮件地址),然后运行 代码:

source ./vars
./clean-all
./build-ca
./build-key-server <servername>
./build-key <clientname>
./build-dh

3.注意:
这只是第一次产生证书的正确操作,其中 build-ca 创建根证书,若你没有清除全部VPN Server/Client的打算,你不应该再次运行此命令; 创建的全部证书及私钥都在当前目录的 keys 下面,而命令 clean-all 将清除 keys 下面全部内容,因此 cliean-all 只在 build-ca 前运行一次。 随后添加 Server 证书或 Client 证书只需运行(建议单独的客户端配置单独的证书) 代码:

./vars
./build-key-server <servername>
or
./build-key <clientname>

4.配置Server端
从示例中解压 server.conf 代码:

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz  /etc/openvpn/
sudo gzip -d /etc/openvpn/server.conf.gz

将相关证书、私匙拷贝的 /etc/openvpn

ca.crt
server.crt
server.key
dh1024.pem

5.修改 server.conf
关键一:取消注释 push "route a.b.c.d 255.255.255.0",并将地址和掩码替换为办公网络的地址和掩码
目的是为客户端加一条路由,这样客户端才有可能访问到办公网络中出VPN Server之外的其它主机
关键二:取消注释 push "dhcp-option DNS a.b.c.d" 和 push "dhcp-option WINS a.b.c.d", 并将地址替换为实际的 DNS 和 WINS 服务器的地址
目的是客户端连接VPN后仍能访问 Internet,(若推过来的DNS不能解析外部域名,则即使客户端的路由配置正确,想通过域名访问Internet也不可能)

示例server.conf

port 443
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key    
dh dh1024.pem
server 192.168.42.0 255.255.255.0
ifconfig-pool-persist ipp.txt

push "redirect-gateway def1 bypass-dhcp"    
#增加172.16.1.0 IP断的路由 使VPN客户端能访问这个地址段(真正能访问还需要后面的设置)
push "route 172.16.1.0 255.255.255.0"
push "dhcp-option DNS 202.205.6.4"

#vpn客户端能否相互访问
;client-to-client
#注释掉此参数表示同一个客户端证书只能有一个连接,如果两个客户端使用同一个证书连接的话,
#先连接的会自动断开
;duplicate-cn
keepalive 10 120

comp-lzo
persist-key
persist-tun
status openvpn-status.log
log /var/log/openvpn.log
verb 3

6.Server 端其它设置
配置服务器,允许包转发: 代码:

echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

设置iptable转发规则 使访问目标为172.16.1.0段的请求都转发到eth0网卡,这是vpn服务器连接办公内网的网卡,这里很重要,不然的话VPN客户端还是不能访问办公内网

iptables -t nat -A POSTROUTING -d 172.16.1.0/24 -o eth0 -j MASQUERADE

设置iptable转发规则 使来源为vpn客户端的请求都转发到eth1网卡,这是vpn服务器连接Internet的网卡,这里很重要,不然的话VPN客户端还是不能通过VPN访问Internet

iptables -t nat -A POSTROUTING -s 192.168.42.0/24 -o eth1 -j MASQUERADE

通过修改/etc/rc.local,加入以下代码,使服务器重启后自动设置转发规则

echo 1 |tee /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -d 172.16.1.0/24 -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.42.0/24 -o eth1 -j MASQUERADE
exit 0

三、客户端配置过程

至此openvpn服务器端配置完毕, 客户端只需要将keys目录下生成的对应的ca.crt(公用) 专用client.crt和client.key, client.ovpn拷贝到客户端openvpn安装目录下的config目录,如果没有client.ovpn文件,直接新建一个,内容类似:

client
dev tun
proto udp   
remote <serverip> 443
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key  
comp-lzo
verb 3

运行客户端连接试一下吧:)

OpenVPN详细配置参考 OpenVPN HowTo

相关文章

» Ubuntu环境下让Django使用memcached作为CACHE_BACKEND
» 在T60上安装Ubuntu 7.10 Gusty
» Subversion使用备忘
» [原创]Ubuntu Server下配置Lighttpd+Django运行环境
评论这篇文章
请输入左边图片中的字符