实验4-虚拟专用网与反向代理技术

已完结

1 准备工作

安装openvpn和easy-rsa

1
#yum install openvpn easy-rsa

将相关文件复制到 OpenVPN 的配置目录:

1
#cp -R /usr/share/easy-rsa/ /etc/openvpn

现在有关的文件都在/etc/openvpn/easy-rsa/2.0/这个目录中

修改vars

1
#vim /etc/openvpn/easy-rsa/2.0/vars

将以下这些值修改成你自己的值:

1
2
3
4
5
6
7
8
9
10
export KEY_COUNTRY="CN"
export KEY_PROVINCE="Guangdong"
export KEY_CITY="Guangzhou"
export KEY_ORG="YZZN"
export KEY_EMAIL="info@i-mec.com"
export KEY_CN=droplet.example.com

export KEY_SIZE=2048 #默认密钥长度为 1024,建议为 2048
export CA_EXPIRE=3650 #默认 CA 证书和私钥有效期为 3650 天
export KEY_EXPIRE=3650 #默认服务器/客户端证书和私钥有效期为 3650 天

修改完成后执行

1
2
3
#cd /etc/openvpn/easy-rsa/2.0
#source ./vars
#./clean-all

pic-1

2 生成证书

2.1 构建 CA 私钥和自签发证书

执行

1
# ./build-ca

CN字段填CA其他默认

pic-1

2.2 签发服务器证书和私钥

1
# ./build-key-server server

pic-1

2.3 生成 SSL 协议所需的 Diffie Hellman key exchange 参数

1
# ./build-db

2.4 生成客户端证书和密钥

1
# ./build-key client

pic-1

2.4 生成ta.key文件(防DDos攻击、UDP淹没等恶意攻击)

1
# openvpn --genkey --secret keys/ta.key

至此在keys文件夹下生成了所有我们需要的文件

3 配置openvpn服务器

把配置文件模板复制到openvpn配置目录下

1
# cp /usr/share/doc/openvpn-2.4.1/sample/sample-config-files/server.conf /etc/openvpn

编辑server.conf,修改为以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
port 1194
proto udp
dev tun

ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
key /etc/openvpn/easy-rsa/2.0/keys/server.key
dh /etc/openvpn/easy-rsa/2.0/keys/dh2048.pem

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist ipp.txt

# 可以让客户端之间相互访问直接通过openvpn程序转发,根据需要设置
client-to-client
# 如果客户端都使用相同的证书和密钥连接VPN,一定要打开这个选项,否则每个证书只允许一个人连接VPN
duplicate-cn

keepalive 10 120

tls-auth /etc/openvpn/easy-rsa/2.0/keys/ta.key 0

cipher AES-256-CBC
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3
explicit-exit-notify 1

2.4 配置内核和防火墙,启动服务

(1)执行以下命令开启路由转发功能
sed -i ‘/net.ipv4.ip_forward/s/0/1/‘ /etc/sysctl.conf
sysctl -p

(2)执行以下命令配置防火墙
iptables -I INPUT -p tcp –dport 1194 -m comment –comment “openvpn” -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE
service iptables save

(3)执行以下命令启动openvpn并设置为开机启动
service openvpn start
chkconfig openvpn on

4 客户端配置

/etc/openvpn/easy-rsa/2.0/keys中下载以下文件:

1
2
3
4
ca.crt
client.crt
client.key
ta.key

从openvpn的配置模板文件夹/usr/share/doc/openvpn-2.4.1/sample/sample-config-files/中下载客户端配置文件client.conf

修改client.conf为以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
client
dev tun
proto udp
remote 119.29.245.107 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-CBC
comp-lzo
verb 3

重命名为client.ovpn

下载mac平台下openvpn的客户端Tunnelblick,安装后打开client.ovpn,客户端会自动加载配置,点击连接client,客户端控制台显示成功连接到openvpn服务器,同时可以看到本机的vlan地址是10.8.0.6

pic-1

可以ping通openvpn服务器

pic-1

查看openvpn服务器的日志文件,可以看到客户端连接的记录

pic-1

2 反向代理

在openvpn上安装nginx

1
yum install nginx

3、配置nginx
进入/etc/nginx/conf.d,修改defualt.conf文件

1
2
3
4
5
6
7
8
server {
listen 80;
server_name 127.0.0.1;

location / {
proxy_pass http://10.8.0.6:8080;
}
}

在本机上用Tunnelblick连接到openvpn服务器加入到vlan中,然后启动一个web应用

pic-1

使用另一台处于外网的设备访问openvpn服务器的地址,发现可以访问本机的web应用

pic-1