1. 程式人生 > >簡單的openVPN部署 (證書登入以及使用者名稱密碼認證)

簡單的openVPN部署 (證書登入以及使用者名稱密碼認證)

環境: server:eth0:192.168.2.180         eth1:172.30.25.111 client: 192.168.2.81 server端(路由模式):

一.網路設定

1.開啟伺服器端路由轉發功能

# vi /etc/sysctl.conf net.ipv4.ip_forward = 1 # sysctl -p

2.設定nat轉發:

注:保證VPN地址池可路由出外網

# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

3.設定openvpn埠通過:

# iptables -A INPUT -p TCP --dport 1194 -j ACCEPT

# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

重啟iptables:

注:這裡提一下,INPUT策略是執行後即時生效的,POSTROUTING需要儲存並重啟服務才能生效

# service iptables save

# service iptables restart

注:若想讓該伺服器只提供openvpn等基本服務,可參照本文件附件iptables指令碼

3.時間同步(重要)

# ntpdate asia.pool.ntp.org

二.安裝依賴庫

# yum install -y openssl openssl-devel lzo lzo-devel pam pam-devel automake pkgconfig

三.安裝openvpn:

# wget -c http://swupdate.openvpn.org/community/releases/openvpn-2.3.0.tar.gz

# tar zxvf openvpn-2.3.0.tar.gz

# cd openvpn-2.3.0

# ./configure --prefix=/usr/local/openvpn

# make && make install

# mkdir -p /etc/openvpn

複製模板到openvpn配置目錄:

# cp -rf sample /etc/openvpn/

複製openvpn配置檔案到主目錄:

# cp /etc/openvpn/sample/sample-config-files/server.conf /etc/openvpn/

# cd ..

四.下載easy-rsa: easy-rsa-release-2.x.zip  網上找到資源,其他的有時候我沒有試驗成功。 unzip easy-rsa-release-2.x.zip -d /user/local/openvpn cd /user/local/openvpn/easy-rsa-release-2.x
cp easy-rsa ../ cd 2.0/ 編輯 vars vi vars export KEY_SIZE=2048 export KEY_COUNTRY="CN"
export KEY_PROVINCE="GD"
export KEY_CITY="SZ"
export KEY_ORG="SZ1CARD1-WDG" export KEY_EMAIL="[email protected]" export KEY_OU="SZ1CARD1_OPS" 儲存推遲後給予x許可權 chmod +x vars ./vars ./clean-all       #清除檔案         ./build-ca server     #生成服務端 ./build-key-server server     #生成服務端證書 ./build-key client  ##此處定義為客戶端名字 任意 ./build-dh  openvpn --genkey --secert keys/ta.key  ##使用者名稱密碼認證時需要 以上生成檔案時都可以一路回車過去 生成的檔案在keys資料夾中: mkdir -p /usr/local/openvpn/config cd keys/ cp * /usr/local/openvpn/config cd /usr/local/openvpn/config cp /usr/local/src/openvpn-2.3.0/sample/sample-config-files/server.conf  /usr/local/openvpn/config   ##copy配置檔案 vi  server.conf port 1194
proto tcp
dev tun
ca ca.crt
cert server.crt
key server.key  # This file should be kept secret
dh dh2048.pem
server 172.30.25.0  255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 10.1.1.0 255.255.255.0"
push "route 10.1.10.0 255.255.255.192"
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 114.114.114.114" client-to-client keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3  如果證書檔案沒有放在config目錄,那麼配置檔案中要寫絕對路徑 /usr/local/openvpn/sbin/openvpn /usr/local/openvpn/config/server.conf & 看到Initialization Sequence Completed  即啟動成功。 client配置: 以上路徑下載客戶端 Windows版本 安裝完畢後將路徑中sample-config的client.ovpn拷貝到config資料夾中 編輯config資料夾中的client.ovpn client dev tun proto tcp  remote 172.30.25.0 1194 resolv-retry infinite nobind  persist-key persist-tun ca ca.crt  cert client.crt key client.key comp-lzo verb 3  儲存後重啟openVPN服務然後點選OpenVPN GUI啟動就可以連線成功並分配一個IP。且此時可以ping通172.30.25.111 注意:有時候會提示All TAP-Windows adapters on this system are currently in use 其實是網路介面卡沒有空閒。應當啟用本地連線2 然後重連就可以了。 使用者名稱密碼驗證: 修改server.conf: tls-auth ta.key 0 # This file is secret auth-user-pass-verify /usr/local/openvpn/config/checkpsw.sh via-env

client-cert-not-required

username-as-common-name

script-security 3

注:如果加上client-cert-not-required則代表只使用使用者名稱密碼方式驗證登入,如果不加,則代表需要證書和使用者名稱密碼雙重驗證登入! 在cofnig目錄中建立指令碼 vi checkpsw.sh #!/bin/sh ########################################################### # checkpsw.sh (C) 2004 Mathias Sundman <[email protected]> # # This script will authenticate OpenVPN users against # a plain text file. The passfile should simply contain # one row per user with the username first followed by # one or more space(s) or tab(s) and then the password. PASSFILE="/usr/local/openvpn/config/psw-file" LOG_FILE="/usr/local/openvpn/var/openvpn-password.log" TIME_STAMP=`date "+%Y-%m-%d %T"` ########################################################### if [ ! -r "${PASSFILE}" ]; then   echo "${TIME_STAMP}: Could not open password file \"${PASSFILE}\" for reading." >>  ${LOG_FILE}   exit 1 fi CORRECT_PASSWORD=`awk '!/^;/&&!/^#/&&$1=="'${username}'"{print $2;exit}' ${PASSFILE}` if [ "${CORRECT_PASSWORD}" = "" ]; then   echo "${TIME_STAMP}: User does not exist: username=\"${username}\", password= \"${password}\"." >> ${LOG_FILE}   exit 1 fi if [ "${password}" = "${CORRECT_PASSWORD}" ]; then   echo "${TIME_STAMP}: Successful authentication: username=\"${username}\"." >> ${LOG_FILE}   exit 0 fi echo "${TIME_STAMP}: Incorrect password: username=\"${username}\", password= \"${password}\"." >> ${LOG_FILE} exit 1 給予許可權:chmod +x  checkpsw.sh 編寫密碼檔案: vi psw-file client sz1card1 chmod 777 psw-file chown nobody.nobody psw-file

修改客戶端配置檔案:client.conf(或者client.ovpn)

登出掉這兩行

#cert client1.crt
#key client1.key

再新增這一行,新增這行,就會提示輸入使用者名稱和密碼

auth-user-pass tls-auth ta.key 1

相關推薦

簡單openVPN部署 證書登入以及使用者名稱密碼認證

環境: server:eth0:192.168.2.180         eth1:172.30.25.111 client: 192.168.2.81 server端(路由模式): 一.網路設定 1.開啟伺服器端路由轉發功能 # vi /etc/sysct

Java Session的簡單運用 可用於自動登入以及儲存需要的資料等

      在WEB開發中,伺服器可以為瀏覽器建立一個會話物件(session物件),通過將一個sessionID 以cookie方式返回給瀏覽器,只要瀏覽器不保持關閉或者沒有超過session的失效

GitLab 實現代碼自動部署轉載自https://segmentfault.com/a/1190000011561808

use name 無密碼登錄 row 內容 app mage 請求 XML 在當下使用 GIT 來管理代碼已經是一種非常流行的方式了。使用 GIT 可以很方便的給代碼創建分支,撤銷不需要的提交,與他人合作共同編寫代碼。 GitLab 是基於

Kubernetes(k8s)集群部署k8s企業級Docker容器集群管理系列之部署master/node節點組件

clas -- ken let 發現 特殊 ref uber scp 0、前言 整體架構目錄:ASP.NET Core分布式項目實戰-目錄 k8s架構目錄:Kubernetes(k8s)集群部署(k8s企業級Docker容器集群管理)系列目錄 1、部署master組

遊戲製作之路-unity捕魚達人一 開始以及載入介面的製作

Unity捕魚達人的製作 一、建立開始介面 根據上一篇我們所講的,很容易就能把開始介面做出來。 二、遊戲載入場景 遊戲載入條的製作,我是用到了unity中的slider UI元件,如圖 slider元件包括背景和填充區域,在這裡我把背景設為白色,填充區域為藍色。我們把fill下的fil

zabbix_QQ郵件告警部署待續。。。。。。

安裝sendmail wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz yum -y install perl-Net-SSLeay perl-IO-Socket-SSL tar xf sendE

openvas 搭建過程錯誤解決無法登入和端口占用

本節主要是來解決搭建過程中的問題的。 1. 搭建完成後,登入localhost:9392的時候發現輸入帳號密碼,提示帳號密碼錯誤,不能登入。 解決辦法: (1)進入資料夾/usr/local/var/lib/openvas/users 看到自己建立的賬戶(建立的是ad

簡單的遊戲10進位制輪廓線dp

題目: 思路:考慮按順序進行填充,當前位置只受上一個影響和左邊的一個影響。 假設有5列,那麼每一列用一個數來填充,最大是99999,最小是00000. 由於m<=6,所以最大狀態是999999,可以直接從0開始列舉,到999999複雜度為1e6。 dp[sta][cur]

Hibernate簡單得見解會不斷更新如有間接這

Hibernate.cfg.xml  連線資料庫用的  設定資料庫方言(dialect)  設定資料庫驅動  可設定展示sql以日誌形式展示(show_sql) 並且格式化輸出sql(format_sql)  更直觀可讀性高   設定會話的管理方式(和執行緒進行繫結)指定當前

遊戲製作之路-unity捕魚達人一 開始以及載入介面的製作

Unity捕魚達人的製作 一、建立開始介面 根據上一篇我們所講的,很容易就能把開始介面做出來。 二、遊戲載入場景 遊戲載入條的製作,我是用到了unity中的slider UI元件,如圖 slider元件包括背景和填充區域,在這裡我把背景設為白色,填充區域為

MyBatis概覽各元件以及底層實現原理等

一、MyBatis概覽 這是Mybatis的整體架構圖,可以看出它是由幾個主要元件組成,分別為Configuration、Sql對映、Mapper、MappedStatements組成,Configuration包含了所有啟動時的配置資訊,包括mapper中方法對映SQ

tensorflow+tensorflow-serving+docker+grpc模型上線部署不需bazel編譯,有程式碼

系統環境ubuntu14.04(mac上裝的parallels虛擬機器) Python36 Tensroflow 1.8.0 Tensorflow-serving 1.9.0(1.8官方不支援python3) Docker 18.03.1-ce grpc Tens

idea熱部署更新jsp程式碼不用重編譯Tomcat

前端熱部署(更改前端程式碼,不用重啟tomcat,重新整理瀏覽器就可以) 主要在於 On frame deactivation選項配置選擇為 Update classes and re

前後端互動實現nginx,json,以及datatable的問題相關

1.同源問題解決 首先,在同一個域下搭建網路域名訪問,需要nginx軟體,下載之後修改部分配置    然後再終端下cmd  nginx.exe命令,或者開啟nginx.exe檔案,會執行nginx一閃而過,在後臺執行而且一次是開啟兩個的,可以在工作管理員控制結束程序

amoeba的部署mysql讀寫分離,負載均衡

環境前提:java (負載均衡在主從複製環境下針對從庫池,讀寫分離不需要主從複製,有也需要關掉服務才有測試效果) amoeba是阿里沿用的mysql中介軟體, 下載包 amoeba-mysql-3.0.5-RC-distribution.zip 解壓到/usr/src/ 主要兩個配置檔案 d

Ubuntu12.04Openstack部署單節點、單網絡卡

參考文章:http://blog.csdn.net/sweetburden2011/article/details/7859081(在此感謝此文章的作者,同時感謝onestack.sh的作者) 一、系統準備 1. 安裝ubuntu系統(我使用的Ubuntu12.04-des

spring mvc定義登入攔截器登入不讓訪問相關資源,為什麼要放權/login.do就是不攔截/login.do

spring.xml攔截器配置如下: <mvc:interceptor> <mvc:mapping path="/**" /><mvc:exclude-mapping path="/login.do" /><bean class="

建立動態表格節點建立以及表格隔行變色

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html

簡單工廠模式由專門的類來建立例項

最近入手程傑大牛的《大話設計模式》這本書,這本書深入淺出講述了面向物件的23種設計模式,語言通俗易懂,程式碼短小精煉,理論的概述很少,內容都轉化成了我們耳熟能詳,喜聞樂見的文字,下面讓我舉個例子哈! 比如我們都學過面向物件程式設計,但是你要是說起來面向物件有什

spring aop的使用註解方式以及基於xml配置方式

註解方式 ******************* beans.xml ******************* <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springf