目錄git
[TOC]github
yum install epel-release -y yum install open*** easy-rsa -y
## 複製easyrsa腳本到open*** cd /etc/open***/ cp -r /usr/share/easy-rsa /etc/open***/ ## 準備變量用於配置CA機構 cd /etc/open***/easy-rsa/3/ vim vars set_var EASYRSA "$PWD" set_var EASYRSA_PKI "$EASYRSA/pki" set_var EASYRSA_DN "cn_only" set_var EASYRSA_REQ_COUNTRY "ID" set_var EASYRSA_REQ_PROVINCE "Shanghai" set_var EASYRSA_REQ_CITY "Shanghai" set_var EASYRSA_REQ_ORG "Tars *** CERTIFICATE AUTHORITY" set_var EASYRSA_REQ_EMAIL "it@tars.com" set_var EASYRSA_REQ_OU "mgt-***-server1 EASY CA" set_var EASYRSA_KEY_SIZE 4096 ## 用於生成Diffie-Hellman密鑰,位數越高生成時間越久 set_var EASYRSA_ALGO rsa set_var EASYRSA_CA_EXPIRE 7500 set_var EASYRSA_CERT_EXPIRE 365 ## 客戶端證書有效期,建議長一些 set_var EASYRSA_NS_SUPPORT "no" set_var EASYRSA_NS_COMMENT "Tars *** CERTIFICATE AUTHORITY" set_var EASYRSA_EXT_DIR "$EASYRSA/x509-types" set_var EASYRSA_SSL_CONF "$EASYRSA/openssl-1.0.cnf" set_var EASYRSA_DIGEST "sha256" ## 添加可執行權限 chmod +x vars
cd /etc/open***/easy-rsa/3/ ./easyrsa init-pki ./easyrsa build-ca ## 執行過程當中須要設置CA機構密碼,最少6位,其他選項回車便可
./easyrsa gen-req tars-***-server nopass ./easyrsa sign-req server tars-***-server ##系統將要求您輸入"CA"密碼,輸入密碼,而後按Enter。您將在「 pki/issued/」目錄下得到"tars-***-server.crt"證書文件。 openssl verify -CAfile pki/ca.crt pki/issued/tars-***-server.crt ##驗證生成的證書文件 ## 已建立全部服務器證書密鑰。服務器私鑰位於"pki/private/tars-***-server.key",服務器證書位於"pki/issued/tars-***-server.crt"。
./easyrsa gen-req yexinlei nopass ##這裏能夠爲每一個人建立一個證書也能夠建立一個公共證書 ./easyrsa sign-req client yexinlei ## ca簽發yexinlei的證書,先yes,後輸入密碼 openssl verify -CAfile pki/ca.crt pki/issued/client01.crt ## 驗證客戶端證書
./easyrsa gen-dh ## 生成時間取決於咱們機器配置以及vars文件中定義的長度,固然越長越安全。
## 服務器證書 cp pki/ca.crt /etc/open***/server/ cp pki/issued/tars-***-server.crt /etc/open***/server/ cp pki/private/tars-***-server.key /etc/open***/server/ ## 客戶端證書 cp pki/ca.crt /etc/open***/client/ cp pki/issued/yexinlei.crt /etc/open***/client/ cp pki/private/yexinlei.key /etc/open***/client/
cp pki/dh.pem /etc/open***/server/ cp pki/crl.pem /etc/open***/server/
cd /etc/open***/ mkdir -p /var/log/open*** ## 建立日誌文件 vim server.conf ## 編輯配置文件 # Open*** Port, Protocol and the Tun port 54911 proto udp dev tun # Open*** Server Certificate - CA, server key and certificate ca /data1/open***/server/ca.crt cert /data1/open***/server/mgt-***-server1.crt key /data1/open***/server/mgt-***-server1.key # DH and CRL key dh /data1/open***/server/dh.pem # Revoked certificates if we create the list # crl-verify /data1/open***/server/crl.pem # push "redirect-gateway def1" ## 全部客戶端的默認網關都將重定向到*** server 10.254.254.0 255.255.255.0 ## ***地址池 push "route 10.3.0.0 255.255.0.0" ## 推送路由表 push "route 10.10.0.0 255.255.0.0" # DNS configuration push "dhcp-option DNS 10.3.2.20" ## 推送DNS信息 #push "dhcp-option DNS 10.3.2.10" # Domain search configuration. # The latest Open*** client versions for Windows do not recognize option DOMAIN-SEARCH correctly, and work with DOMAIN #push "dhcp-options DOMAIN mgt.tarscorp.com" push "dhcp-option DOMAIN-SEARCH mgt.tarscorp.com" duplicate-cn ## 容許多個客戶端使用相同的證書密鑰進行鏈接 # TLS Security cipher AES-256-CBC tls-version-min 1.2 tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 auth SHA512 auth-nocache # Other Configuration keepalive 20 60 persist-key persist-tun comp-lzo yes daemon user nobody group nobody # LDAP authentication auth-user-pass-verify auth_ldap.sh via-env script-security 3 reneg-sec 0 ## 禁用TSL重協商 # Open*** Log log-append /var/log/open***/***.log # management 10.254.1.1 7656 ## 管理接口,能夠搭配 https://github.com/AuspeXeu/open***-status 進行使用 status /var/log/open***/status.log ## 記錄當前在線***用戶狀態 verb 3
yum install open***-auth-ldap openldap-clients -y vim auth_ldap.sh #!/bin/bash # :mode=shellscript # # Gets environment from Open*** and Auth to LDAP Server set >> /tmp/auth-user ldap_base="ou=Users,dc=tars,dc=com" ldap_host="mgt-ldap-server1" # # Bind As and Search For Self ldapsearch \ -h ${ldap_host} \ -b "uid=${username},${ldap_base}" \ -D "uid=${username},${ldap_base}" \ -w "${password}" \ "uid=${username}" >/dev/null 2>&1 # Return Success (0) or Not Success R="$?" echo "$R" >> /tmp/auth-user exit $R chmod +x auth_ldap.sh
## 配置內核 echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf sysctl -p ## 配置iptables iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT ## 啓動及開機自啓 systemctl start open***@server systemctl enable open***@server ## 若使用雲環境,請開放Open***的安全組權限
## 層級關係 open*** └── 10.10.10.1-dev ├── 10.10.10.1-dev.o*** └── certs ├── ca.crt ├── yexinlei.crt └── yexinlei.key ## 客戶端配置文件 vim 10.10.10.1-dev.o*** client dev tun proto udp remote 10.10.10.1 54911 ca certs/ca.crt cert certs/yexinlei.crt key certs/yexinlei.key reneg-sec 0 auth-user-pass cipher AES-256-CBC auth SHA512 auth-nocache tls-version-min 1.2 tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 resolv-retry infinite compress lzo nobind persist-key persist-tun mute-replay-warnings verb 3
一、open***的配置及客戶端文件是否指定以下字段shell
push "redirect-gateway def1 bypass-dhcp" ##該策略會修改計算機的默認網關爲open***vim
二、若不存在檢查open***客戶端是否有重定向流量開關定義。這種問題主要發生在Linux系統中安全
deepin 系統在open***下包含「僅應用於相對應的網絡上的資源」選項,勾選該選項意味着只會增長open***推送的路由,而不會重定向全部流量。具體Ubuntu及debian等系統各位仔細查看響應的配置bash
三、若是是在找不到問題能夠嘗試使用open***命令鏈接,藉助expect自動化登陸,而不借助系統或第三方open***工具服務器
#!/usr/bin/expect spawn sudo open*** --config 10.10.10.1-dev.o*** expect { "*Username" {send "xxxx\r";exp_continue} "*Password" {send "xxxx\r"} } expect eof
場景是咱們印度一臺服務器作open***,但因爲不可抗緣由端口國內常常不可用,國外訪問正常,因此知足國內須要常常變動端口,那麼每次修改端口給國外的小夥伴並不友好。因此能夠在一臺服務器上部署兩組***實例,分別給國內與國外使用,而修改端口也不影響印度同事正常使用。網絡
分別配置不一樣實例的啓動加載配置文件,如下爲參考app
[Unit] Description=Open*** Robust And Highly Flexible Tunneling Application On %I After=network.target [Service] Type=notify PrivateTmp=true ExecStart=/usr/sbin/open*** --config /data1/open***/server-india.conf ## 這裏指向不一樣配置文件 [Install] WantedBy=multi-user.target
默認Windows安裝只會有一個「TAP-Windows Adapter V9」的虛擬網卡,只能知足一個open***鏈接,因此使用自帶工具添加ide
Windows主機: 以管理員身份運行該文件--> "C:\Program Files\TAP-Windows\bin\addtap.bat" --> 提示「Drivers installed successfully.」按任意鍵退出 從新打開***嘗試同時鏈接兩個***
理論上只要路由不衝突,多個***共存徹底不是問題,因此從路由表上開始排查。分別單獨登陸***工具,並記錄每一個***的路由表,而後做對比,排查是否存在路由衝突
及網關重定向
,這兩樣都會致使沒法共存
Windows: route print Linux: route -n