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) |