通过openvpn搭建点对点vpn服务

更新时间:2024-04-11 19:01:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

openvpn搭建点对点vpn服务

需求:

总部一台服务器架设openvpn服务,分支通过openvpn连接到总部,然后实现各个分支及总部实现互访。 拓扑:

一.服务器端安装及配置(总部)

服务器环境:centos 6.5 mini 内网IP:192.168.10.1 外网IP:172.16.0.1

1.安装前准备

# 关闭selinux setenforce 0

sed -i '/^SELINUX=/c\\SELINUX=disabled' /etc/selinux/config

# 安装openssl和lzo,lzo用于压缩通讯数据加快传输速度 yum -y install opensslopenssl-devel yum -y install lzo

# 安装epel源

rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm sed -i 's/^mirrorlist=https/mirrorlist=http/' /etc/yum.repos.d/epel.repo

2.安装及配置OpenVPN和easy-rsa

# 安装openvpn和easy-rsa yum -y install openvpn easy-rsa

# 修改vars文件

cd /usr/share/easy-rsa/2.0/ vimvars

# 修改注册信息,比如公司地址、公司名称、部门名称等。 export KEY_COUNTRY=\export KEY_PROVINCE=\export KEY_CITY=\export KEY_ORG=\

export KEY_EMAIL=\export KEY_OU=\# 初始化环境变量 sourcevars

# 清除keys目录下所有与证书相关的文件

# 下面步骤生成的证书和密钥都在/usr/share/easy-rsa/2.0/keys目录里 ./clean-all

# 生成根证书ca.crt和根密钥ca.key(一路按回车即可) ./build-ca

# 为服务端生成证书和密钥(一路按回车,直到提示需要输入y/n时,输入y再按回车,一共两次) ./build-key-server server

# 每一个登陆的VPN客户端需要有一个证书,每个证书在同一时刻只能供一个客户端连接,下面建立2份

# 为客户端生成证书和密钥(一路按回车,直到提示需要输入y/n时,输入y再按回车,一共两次)(想用密码认证此步骤可以不要)

./build-key client1 ./build-key client2

# 创建迪菲·赫尔曼密钥,会生成dh2048.pem文件(生成过程比较慢,在此期间不要去中断它) ./build-dh

# 生成ta.key文件(防DDos攻击、UDP淹没等恶意攻击) openvpn --genkey --secret keys/ta.key

3.创建服务器端配置文件

# 在openvpn的配置目录下新建一个keys目录 mkdir /etc/openvpn/keys

# 将需要用到的openvpn证书和密钥复制一份到刚创建好的keys目录中

cp /usr/share/easy-rsa/2.0/keys/{ca.crt,server.{crt,key},dh2048.pem,ta.key} /etc/openvpn/keys/ # 复制一份服务器端配置文件模板server.conf到/etc/openvpn/

cp /usr/share/doc/openvpn-2.3.2/sample/sample-config-files/server.conf /etc/openvpn/ # 编辑server.conf

vim /etc/openvpn/server.conf port 1194

# 改成tcp,默认使用udp,如果使用HTTP Proxy,必须使用tcp协议 prototcp devtun

# 路径前面加keys,全路径为/etc/openvpn/keys/ca.crt ca keys/ca.crt cert keys/server.crt

key keys/server.key # This file should be kept secret dh 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 keys/ta.key 0 # This file is secret comp-lzo persist-key persist-tun

# OpenVPN的状态日志,默认为/etc/openvpn/openvpn-status.log status openvpn-status.log

# OpenVPN的运行日志,默认为/etc/openvpn/openvpn.log log-append openvpn.log

# 改成verb 5可以多查看一些调试信息 verb 5

client-cert-not-required #仅使用密码方式验证

plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-pam.so login #通过linux自身账号做验证 username-as-common-name

4.linux创建用户及密码

useradd user –M –s /sbin/nologin passwd user

5.配置内核和防火墙,启动服务 # 开启路由转发功能

sed -i '/net.ipv4.ip_forward/s/0/1/' /etc/sysctl.conf sysctl -p

# 总部服务器iptables配置

[root@router-zb ~]# cat /etc/sysconfig/iptables

# Generated by iptables-save v1.4.7 on Sat Apr 8 17:14:30 2017 *nat

:PREROUTING ACCEPT [110:13995] :POSTROUTING ACCEPT [0:0] :OUTPUT ACCEPT [0:0]

-A POSTROUTING -m policy --dir out --pol none -j MASQUERADE -A POSTROUTING -s 192.168.10.0/24 -o eth1 -j MASQUERADE COMMIT

# Completed on Sat Apr 8 17:14:30 2017

# Generated by iptables-save v1.4.7 on Sat Apr 8 17:14:30 2017 *filter

:INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [16949:1162959]

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 1194 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -i eth1 -o eth2 -j ACCEPT -A FORWARD -i eth2 -o eth1 -j ACCEPT -A FORWARD -i tun+ -o eth2 -j ACCEPT -A FORWARD -i eth2 -o tun+ -j ACCEPT -A FORWARD -i eth1 -o tun+ -j ACCEPT -A FORWARD -i tun+ -o eth1 -j ACCEPT -A FORWARD -i tun+ -j ACCEPT

-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT

# 启动openvpn并设置为开机启动

serviceopenvpn start chkconfigopenvpn on

6.创建客户端配置文件

# 复制一份client.conf模板命名为client.ovpn

cp /usr/share/doc/openvpn-2.3.2/sample/sample-config-files/client.conf client.ovpn # 编辑client.ovpn vimclient.ovpn client devtun

# 改为tcp prototcp

# OpenVPN服务器的外网IP和端口 remote172.16.0.1 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt

ns-cert-type server # 去掉前面的注释 tls-authta.key 1 comp-lzo verb 3

二.分支端安装及配置

1.安装openvpn参考总部服务器

2.复制client.ovpn文件到/etc/openvpn/目录下

#添加pass.txt文件 vim pass.txt user password :wq

# 编辑client.ovpn vimclient.ovpn

client devtun # 改为tcp prototcp

# OpenVPN服务器的外网IP和端口 remote172.16.0.1 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt

ns-cert-type server # 去掉前面的注释 tls-authta.key 1 comp-lzo verb 3

auth-user-pass /etc/openvpn/pass.txt (windows系统将文件放在config文件下只需填写auth-user-pass pass.txt)

连接openvpn:

openvpn --config /etc/openvpn/client.ovpn

3.分支服务器iptables配置

[root@router-fz001 ~]# cat /etc/sysconfig/iptables

# Generated by iptables-save v1.4.7 on Sat Apr 8 19:15:36 2017 *filter

:INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [152:15808]

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -i eth2 -o tun+ -j ACCEPT -A FORWARD -i tun+ -o eth2 -j ACCEPT -A FORWARD -i eth2 -j ACCEPT -A FORWARD -i tun+ -j ACCEPT

-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT

# Completed on Sat Apr 8 19:15:36 2017

# Generated by iptables-save v1.4.7 on Sat Apr 8 19:15:36 2017 *nat

:PREROUTING ACCEPT [48:4412]

:POSTROUTING ACCEPT [0:0] :OUTPUT ACCEPT [0:0]

-A POSTROUTING -s 192.168.20.0/24 -o eth1 -j MASQUERADE COMMIT

# Completed on Sat Apr 8 19:15:36 2017 分支如果需要开机自动启动openvpn服务 vim /etc/rc.local

三.总部openvpn服务器配置路由

1.总部访问分支路由

vim /etc/openvpn/server.conf # EXAMPLE: Suppose the client

# having the certificate common name \# also has a small subnet behind his connecting # machine, such as 192.168.40.128/255.255.255.248. # First, uncomment out these lines: client-config-dirccd

route 192.168.20.0 255.255.255.0

route 192.168.30.0 255.255.255.0 #添加总部到各个分支的路由

编辑保存后需要在/etc/openvpn/下建立ccd文件夹 创建一个名叫20的文件 vim 20

iroute 192.168.20.0 255.255.255.0 #到分支1的路由 :wq

到各个分支的路由文件需要分别建立 总部路由表:

2.分支访问总部及分支互访

# Push routes to the client to allow it

# to reach other private subnets behind # the server. Remember that these # private subnets will also need # to know to route the OpenVPN client # address pool (10.8.0.0/255.255.255.0) # back to the OpenVPN server.

push \push \

push \ #这个路由表会推送给每个连接分支(凡是vpn想访问的必须要添加进来) #添加后vpn拨入后路由表会看到去往各处的路由 分支路由表

分支客户端访问总部服务器:

traceroute 中间有一跳是交给总部vpntun接口的

总部服务器访问分支:

traceroute 中间有一跳是交给分支vpntun接口的

本文来源:https://www.bwwdw.com/article/eacp.html

Top