出自Linux 中文 BLOG跳转到: 导航, 搜索 目录 [] 说明
昨晚看了半天,配置了个 PPTP 和 Open×××。心得分别写出来。
本篇是用 TAP 连接的,采取 桥接Bridging(不是 路由Routing) 连接方式。区别参考 http://openvpn.net/faq.html#bridge2 。 路由篇请看: http://wiki.linuxgnu.org/index.php/Open×××_Routing
环境说明- Server: Gentoo
- IP: 192.168.0.1
- Open××× 监听 1195端口
- Client: Windows XP SP2
- IP: 192.168.0.3
- ××× Network
- Network: 192.168.0.0/24 (192.168.0.100-192.168.0.200)
- IP 分配由 服务器的DHCP 管理
软件安装 安装 openvpn
- Gentoo
- Windows
下载版本 2.1_rc4
配置
首先,记得关掉所有参与的机器的防火墙!不管是 Windows 还是 Linux,这会省你很多功夫的。
配置中所有出现 linuxgnu.org 的地方都请大家换成自己相应的域名。
服务器设置 配置文件配置我是抄这里的,改里边的一些参数。 以下是修改过的文件 (/etc/openvpn/bridge.conf)
port 1195dev tap0
mode server
proto tcp-server
client-to-client
tls-server
dh keys/dh1024.pem
ca keys/ca.crt
cert keys/linuxgnu.org.crt
key keys/linuxgnu.org.key # This file should be kept secret
keepalive 10 120
comp-lzo 证书文件 # 做一个备份
$ cp -a /usr/share/openldap/easy-rsa /tmp/easy-rsa
$ cd /tmp/easy-rsa
# 接着要修改 vars 文件,主要修改最後5行
$ vim vars
# 读入设置
$ source ./vars
# 清理
$ ./clean-all
# 生成服务器证书以及所需密钥文件
$ ./build-dh #此命令运行时间比较长
$ ./pkitool --initca
$ ./pkitool --server linuxgnu.org
# 生成用户证书
$ ./pkitool mylaptop
到此证书文件生成完毕,把生成的证书等备份到 /etc/openvpn,记得要用 root。
# cp -a vars keys /etc/openvpn/ Bridge设置 (针对Gentoo)我用的是Gentoo,所以请其他发行版的兄弟们自己找相应的设置方法。
/etc/conf.d/net# eth0 外网+DHCP
config_eth0=( "dhcp" )
dhcp_eth0="nodns nontp nonis"
# eth1/tap0 组成 br0,无IP
# br0 作内网, 192.168.0.1/24
config_eth1=("null")
config_tap0=("null")
tuntap_tap0="tap"
config_br0=( "192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.255" )
bridge_br0="eth1 tap0"
brctl_br0=( "stp off" )
RC_NEED_br0=" net.eth1 net.tap0 " # net.br0 依赖的组成, 别遗漏了
相应的 /etc/init.d/net.XXX(如 net.tap0,net.br0,net.eth0,net.eth1) 一定要存在,记得 ln -s 去。
DHCP设置你可以继续沿用原来的 DHCP 设置,但是根据 http://openvpn.net/INSTALL-win32.html 中 Notes -- Setting TAP-Win32 address/subnet automatically via DHCP 一文,DHCP 服务器有可能需要根据不同情况提供信息。 配置如下:
ddns-update-style interim;ddns-domainname "linuxgnu.org";
ignore client-updates;
option domain-name "linuxgnu.org";
default-lease-time 43200;
max-lease-time 86400;
subnet 192.168.0.0 netmask 255.255.255.0 {
authoritative;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
pool { # Local user
deny members of "openvpn";
range 192.168.0.10 192.168.0.99;
option routers 192.168.0.1;
option tftp-server-name "192.168.0.1";
option domain-name-servers 192.168.0.1, 1.2.3.4, 1.2.3.5; #Local DNS + ISP DNS
}
pool { # Open××× user,只提供IP,不改用户的 DNS Gateway 等设置
allow members of "openvpn";
range 192.168.0.100 192.168.0.200;
}
} 启动调试
Bridge 部分
# brctl show应该会出现类似这样的结果
br0 8000.0011d8d9c626 no eth1tap0
××× 部分
# ln -sv openvpn /etc/init.d/openvpn.bridge# /etc/init.d/openvpn.bridge start
看看启动是否成功。
客户端起来後,可以试试 ping 客户端的IP,比如例子中是 192.168.0.100 (根据DHCP分配)
$ ping 192.168.0.100 客户端设置 配置文件config 目录中创建目录 bridge, 再创建文件 bridge.ovpn,内容如下:
clientdev tap
proto tcp
remote 192.168.0.1 1195
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert mylaptop.crt
key mylaptop.key
remote-cert-tls server
comp-lzo
verb 3 证书文件
把服务器证书目录中的 ca.crt mylaptop.crt mylaptop.key 这几个文件拷贝到 Windows 机器的 config/bridge 目录中。
启动调试右击 bridge.opvn 文件,选 Start Open××× on this config files,可以看到一个窗口弹出。可以看到是否正常连接。
启动 Open××× GUI,可以缩到图标栏,比窗口简洁。
点击新建立的连接,可以看到获得的 IP 为 192.168.0.100,而且 ping 192.168.0.1 可以看到反应。
我碰到问题
- 防火墙
- 一定记得关掉。除非你确定没阻碍任何通讯。
参考资料