> CentOS > CentOS服务器 > 文件同步 >

Centos单网卡内网搭建openvpn服务

Centos单网卡内网搭建openvpn服务

 

拓扑图如下

概述:

1.      实现的功能:... 1

2.      安装前准备:1

3.      安装openvpn. 2

4.      生成证书文件:... 2

5.    创建服务端配置文件... 2

6.      配置内核路由转发和iptables转发:... 3

7.      创建客户端配置文件:... 4

8.      客户端的安装及配置:4

 

1.     实现的功能:

通过openvpn客户端连接上vpn,能够获取ip,能够访问内网工作区PC

 

2.     安装前准备:

关闭selinux

将外网ip地址端口映射到openvpn服务器的1194端口

 

 

3.     安装openvpn

# rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm

# yum -y install openssl openssl-devel lzo openvpn easy-rsa

 

4.     生成证书文件:

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

# rm -rf vars&& vi vars

exportEASY_RSA="`pwd`"

exportOPENSSL="openssl"

exportPKCS11TOOL="pkcs11-tool"

exportGREP="grep"

exportKEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`

exportKEY_DIR="$EASY_RSA/keys"

echo NOTE: If you run./clean-all, I will be doing a rm -rf on $KEY_DIR

exportPKCS11_MODULE_PATH="dummy"

exportPKCS11_PIN="dummy"

export KEY_SIZE=2048

export CA_EXPIRE=3650

exportKEY_EXPIRE=3650

exportKEY_COUNTRY="CN"

exportKEY_PROVINCE="GD"

exportKEY_CITY="Zhuhai"

exportKEY_ORG="smartsoft"

exportKEY_EMAIL="me@myhost.mydomain"

exportKEY_OU="smartsoft"

exportKEY_NAME="EasyRSA"

# source vars  //重新初始化证书信息环境变量

# ./clean-all   //清除keys目录下所有与证书相关的文件

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

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

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

# ./build-dh               //创建迪菲·赫尔曼密钥,会生成dh2048.pem文件

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

 

5.创建服务端配置文件

# mkdir /etc/openvpn/keys

# cp /usr/share/easy-rsa/2.0/keys/{ca.crt,server.{crt,key},dh2048.pem,ta.key} /etc/openvpn/keys/

# vim /etc/openvpn/server.conf

 

;mode server

;tls-server

port 1194

proto tcp

;topology subnet

dev tun

ca keys/ca.crt

cert keys/server.crt

key keys/server.key

dh keys/dh2048.pem

script-security 3

username-as-common-name

;plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-ldap.so "/etc/openvpn/server/ldap.conf"

server 10.10.10.0 255.255.255.0

ifconfig-pool-persist ipp.txt

push "redirect-gateway"

push "route 172.16.112.0 255.255.255.0"

push "route 0.0.0.0 0.0.0.0"

push "dhcp-option DNS 192.168.21.2"

push "dhcp-option DNS 114.114.114.114"

duplicate-cn

client-to-client

keepalive 10 120

comp-lzo

persist-key

persist-tun

status openvpn-status.log

#通过使用用户验证密码文件来验证vpn登录用户

auth-user-pass-verify /etc/openvpn/users/checkpsw.sh via-env

;client-cert-not-required

username-as-common-name

verb 5

mute 10

reneg-sec 1800

 

6.     配置内核路由转发和iptables转发:

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

# sysctl -p

//可以先去熟悉如何定义iptables策略

# vi /etc/sysconfig/iptables(红色部分表示重要的策略)

# Generated by iptables-save v1.4.7 on Mon Nov  2 19:19:12 2015

*nat

:PREROUTING ACCEPT [0:0]

:POSTROUTING ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

#不允许访问10.0.9/8/7/6.*网段,这是因为内网网络是跟另外一个网络建立了vpn连接,所以不想用Openvpn直接访问另外一个网络

-A PREROUTING -d 10.0.9.0/24 -p tcp -m tcp --dport 22 -j DNAT --to-destination 127.0.0.1

-A PREROUTING -d 10.0.8.0/27 -p tcp -m tcp --dport 22 -j DNAT --to-destination 127.0.0.1

-A PREROUTING -d 10.0.8.128/25 -p tcp -m tcp --dport 22 -j DNAT --to-destination 127.0.0.1

-A PREROUTING -d 10.0.8.32/27 -p tcp -m tcp --dport 22 -j DNAT --to-destination 127.0.0.1

-A PREROUTING -d 10.0.8.64/27 -p tcp -m tcp --dport 22 -j DNAT --to-destination 127.0.0.1

-A PREROUTING -d 10.0.7.0/25 -p tcp -m tcp --dport 22 -j DNAT --to-destination 127.0.0.1

-A PREROUTING -d 10.0.7.128/26 -p tcp -m tcp --dport 22 -j DNAT --to-destination 127.0.0.1

-A PREROUTING -d 10.0.7.192/26 -p tcp -m tcp --dport 22 -j DNAT --to-destination 127.0.0.1

-A PREROUTING -d 10.0.6.0/26 -p tcp -m tcp --dport 22 -j DNAT --to-destination 127.0.0.1

-A PREROUTING -d 10.0.6.64/26 -p tcp -m tcp --dport 22 -j DNAT --to-destination 127.0.0.1

-A PREROUTING -d 10.0.6.128/26 -p tcp -m tcp --dport 22 -j DNAT --to-destination 127.0.0.1

-A PREROUTING -d 10.0.6.192/26 -p tcp -m tcp --dport 22 -j DNAT --to-destination 127.0.0.1

#伪装10.10.10.0/24的数据

-A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE

#地址转换

-A POSTROUTING -s 10.10.10.0/24 -d 172.16.112.0/24 -j SNAT --to-source 172.16.112.171

COMMIT

# Completed on Mon Nov  2 19:19:12 2015

# Generated by iptables-save v1.4.7 on Mon Nov  2 19:19:12 2015

*filter

:INPUT ACCEPT [603:48381]

:FORWARD ACCEPT [594:717393]

:OUTPUT ACCEPT [1777:901584]

-A INPUT -i lo -j ACCEPT

-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

-A INPUT -p tcp -m tcp --dport 389 -j ACCEPT

-A INPUT -p tcp -m tcp --dport 943 -j ACCEPT

-A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT

-A INPUT -p tcp -m tcp --dport 8088 -j ACCEPT

-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT

-A INPUT -p tcp -m tcp --dport 3389 -j ACCEPT

-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

-A INPUT -m state --state ESTABLISHED -j ACCEPT

-A INPUT -s 172.16.112.0/24 -p tcp -j ACCEPT

-A INPUT -s 172.16.113.0/24 -p tcp -j ACCEPT

-A INPUT -s 172.16.114.0/24 -p tcp -j ACCEPT

-A INPUT -s 192.168.21.0/24 -p tcp -j ACCEPT

-A INPUT -s 10.10.10.0/24 -d 172.16.112.0/24 -i eth0 -p tcp -m tcp --dport 1194 -j ACCEPT

-A INPUT -i tun0 -j ACCEPT

-A FORWARD -i tun0 -j ACCEPT

COMMIT

# Completed on Mon Nov  2 19:19:12 2015

# service openvpn start

# chkconfig openvpn on

# chkconfig iptables on

# service iptables restart

 

7.     创建客户端配置文件:

 

//创建文件命名为smartsoft.ovpn

# vi client.ovpn

client

dev tun

proto tcp

remote 1.1.1.1 1010

resolv-retry infinite

nobind

persist-key

persist-tun

ca ca.crt

cert smartsoft.crt    

key smartsoft.key      

ns-cert-type server

comp-lzo

verb 5

 

8.     客户端的安装及配置:

//OpenVPN 2.3.3 Windows 32位 安装文件:

      http://swupdate.openvpn.org/community/releases/openvpn-install-2.3.3-I002-i686.exe

//OpenVPN 2.3.3 Windows 64位 安装文件:

      http://swupdate.openvpn.org/community/releases/openvpn-install-2.3.3-I002-x86_64.exe

//将OpenVPN服务器上的smartsoft.ovpn、ca.crt、smartsoft.crt、smartsoft.key、ta.key上传到Windows客户端安装       目录下的config文件夹(C:\Program Files\OpenVPN\config)

//打开服务管理器,启动openvpn服务

//启动OpenVPN GUI

      在电脑右下角的openvpn图标上右击,选择“Connect”。正常情况下应该能够连接成功,分配正常的IP。

 

 

   最终终于可以通过openvpn客户端连接openvpn服务了,并且终于可以访问公司内网了,不能访问公司内网与合作公司的网络建立的vpn网络,多多少少实现了对合作公司的网络安全

(责任编辑:IT)