User:Doooo/OpenVPN-zh

From Gentoo Wiki
Jump to: navigation, search
Resources

初始化要求

KERNEL 确定内核启用 CONFIG_TUN 选项
Device Drivers ->  Network device support
<*>   Universal TUN/TAP device driver support

Cannot load package information. Is the atom net-misc/openvpn correct?

安装

安装 openvpn

root #emerge -v net-misc/openvpn

安装和配置

服务器配置

如果是初次设置openvpn服务, 我们需要从头开始创建一个 PKI (公共密钥体系).

Note
在本例中, 我们应该将生成的密钥放在 /etc/openvpn/exmaple/ 目录
Note
这仅会创建一个单独的服务端. 更多 openvpn 实例, 参见 'Gentoo 细节' 部分.

创建一个openvpn服务端配置文件.

FILE /etc/openvpn/openvpn.conf设置一个使用udp协议的openvpn服务端
# 服务器监听端口
port 12112

# openvpn协议, 可以是 tcp / udp / tcp6 / udp6
proto udp

# tun/tap 设备
dev tun0

# 密钥配置, 使用生成的密钥
ca example/ca.crt
cert example/example.crt
key example/example.key
dh example/dh2048.pem

# tls-auth密钥安全认证选项
# tls-auth example/ta.key 0

# OpenVPN网络信息 
server 10.100.0.0 255.255.255.0

# persistent device and key settings
persist-key
persist-tun
ifconfig-pool-persist ipp.txt

# 推送路由表
push "route 192.168.1.0 255.255.255.0"
# push "dhcp-option DNS 192.168.1.1"

# 连接
keepalive 10 120
comp-lzo

user nobody
group nobody

# 日志
status openvpn-status.log
log /etc/openvpn/openvpn.log
verb 4

启动 openvpn 服务端

root #/etc/init.d/openvpn start

客户端设置

通过安全的方式(比如SSH)将必需的密钥拷贝到客户端

  • ca.crt
  • client1.csr (in this example)
  • client1.crt (in this example)
  • client1.key (in this example)
  • ta.key (if using tls-auth)

创建一个openvpn客户端配置文件.

FILE /etc/openvpn/openvpn.conf使用udp协议的openvpn客户端设置
# 客户端声明
client

# tun/tap 设备
dev tun0

# 协议类型, 基于服务端设置
proto udp

# 服务器地址
remote address.to.server 12112

# 连接
comp-lzo
resolv-retry 30
nobind

# persistent device and keys
persist-key
persist-tun

# 密钥设置
ca example/ca.crt
cert example/client1.crt
key example/client1.key

# tls-auth选项
# tls-auth exmaple/ta.key 1

# 日志
log /etc/openvpn/openvpn.log
verb 4

启动客户端

OpenRC

root #/etc/init.d/openvpn start

or

systemd

root #systemctl start openvpn

如果一切顺利,您已经有了一个可用的OpenVPN连接.

Gentoo 细节

初始化脚本运行多个隧道. 这取决于隧道的名字 - 例如 EXAMPLE

使用 OpenRC:

root #ln -s /etc/init.d/openvpn /etc/init.d/openvpn.EXAMPLE

现在创建 /etc/openvpn/EXAMPLE.conf 作为您的配置文件

root #/etc/init.d/openvpn.EXAMPLE start

使用 systemd:

创建 /etc/openvpn/EXAMPLE.conf 作为您的配置文件

root #ln -s /usr/lib/systemd/system/openvpn@.service /etc/systemd/system/openvpn@EXAMPLE.service
root #systemctl start openvpn@EXAMPLE

您可以使用喜爱的名字替换掉 EXAMPLE 来创建更多隧道. 每一个隧道都有自己的配置文件并且可以独立启动停止. 默认使用openvpn.conf作为配置文件并不会创建到服务的符号链接. 这两种方法您都可以选择.

故障排除

扩展资源