OpenVPN server端配置文件詳細說明(轉)

来源:http://www.cnblogs.com/wayneiscoming/archive/2017/09/19/7552354.html
-Advertisement-
Play Games

本文將介紹如何配置OpenVPN伺服器端的配置文件。在Windows系統中,該配置文件一般叫做server.ovpn;在Linux/BSD系統中,該配置文件一般叫做server.conf。雖然配置文件名稱不同,但其中的配置內容與配置方法卻是相同的。 本文根據官方提供的server.ovpn示例文件直 ...


 

本文將介紹如何配置OpenVPN伺服器端的配置文件。在Windows系統中,該配置文件一般叫做server.ovpn;在Linux/BSD系統中,該配置文件一般叫做server.conf。雖然配置文件名稱不同,但其中的配置內容與配置方法卻是相同的。

本文根據官方提供的server.ovpn示例文件直接翻譯得出。Windows、Linux、BSD等系統的伺服器端配置文件均可參考本文。你可以點擊查看OpenVPN客戶端的配置文件說明

#################################################
# 針對多客戶端的OpenVPN 2.0 的伺服器端配置文件示例
#
# 本文件用於多客戶端<->單伺服器端的OpenVPN伺服器端配置
#
# OpenVPN也支持單機<->單機的配置(更多信息請查看網站上的示例頁面)
#
# 該配置支持Windows或者Linux/BSD系統。此外,在Windows上,記得將路徑加上雙引號,
# 並且使用兩個反斜杠,例如:"C:\\Program Files\\OpenVPN\\config\\foo.key"
#
# '#' or ';'開頭的均為註釋內容
#################################################

#OpenVPN應該監聽本機的哪些IP地址?
#該命令是可選的,如果不設置,則預設監聽本機的所有IP地址。
;local a.b.c.d

# OpenVPN應該監聽哪個TCP/UDP埠?
# 如果你想在同一臺電腦上運行多個OpenVPN實例,你可以使用不同的埠號來區分它們。
# 此外,你需要在防火牆上開放這些埠。
port 1194

#OpenVPN使用TCP還是UDP協議?
;proto tcp
proto udp

# 指定OpenVPN創建的通信隧道類型。
# "dev tun"將會創建一個路由IP隧道,
# "dev tap"將會創建一個乙太網隧道。
#
# 如果你是乙太網橋接模式,並且提前創建了一個名為"tap0"的與乙太網介面進行橋接的虛擬介面,則你可以使用"dev tap0"
#
# 如果你想控制VPN的訪問策略,你必須為TUN/TAP介面創建防火牆規則。
#
# 在非Windows系統中,你可以給出明確的單位編號(unit number),例如"tun0"。
# 在Windows中,你也可以使用"dev-node"。
# 在多數系統中,除非你部分禁用或者完全禁用了TUN/TAP介面的防火牆,否則VPN將不起作用。
;dev tap
dev tun

# 如果你想配置多個隧道,你需要用到網路連接面板中TAP-Win32適配器的名稱(例如"MyTap")。
# 在XP SP2或更高版本的系統中,你可能需要有選擇地禁用掉針對TAP適配器的防火牆
# 通常情況下,非Windows系統則不需要該指令。
;dev-node MyTap

# 設置SSL/TLS根證書(ca)、證書(cert)和私鑰(key)。
# 每個客戶端和伺服器端都需要它們各自的證書和私鑰文件。
# 伺服器端和所有的客戶端都將使用相同的CA證書文件。
#
# 通過easy-rsa目錄下的一系列腳本可以生成所需的證書和私鑰。
# 記住,伺服器端和每個客戶端的證書必須使用唯一的Common Name。
#
# 你也可以使用遵循X509標準的任何密鑰管理系統來生成證書和私鑰。
# OpenVPN 也支持使用一個PKCS #12格式的密鑰文件(詳情查看站點手冊頁面的"pkcs12"指令)
ca ca.crt
cert server.crt
key server.key  # 該文件應該保密

# 指定迪菲·赫爾曼參數。
# 你可以使用如下名稱命令生成你的參數:
#   openssl dhparam -out dh1024.pem 1024
# 如果你使用的是2048位密鑰,使用2048替換其中的1024。
dh dh1024.pem

# 設置伺服器端模式,並提供一個VPN子網,以便於從中為客戶端分配IP地址。
# 在此處的示例中,伺服器端自身將占用10.8.0.1,其他的將提供客戶端使用。
# 如果你使用的是乙太網橋接模式,請註釋掉該行。更多信息請查看官方手冊頁面。
server 10.8.0.0 255.255.255.0

# 指定用於記錄客戶端和虛擬IP地址的關聯關係的文件。
# 當重啟OpenVPN時,再次連接的客戶端將分配到與上一次分配相同的虛擬IP地址
ifconfig-pool-persist ipp.txt

# 該指令僅針對乙太網橋接模式。
# 首先,你必須使用操作系統的橋接能力將乙太網網卡介面和TAP介面進行橋接。
# 然後,你需要手動設置橋接介面的IP地址、子網掩碼;
# 在這裡,我們假設為10.8.0.4和255.255.255.0。
# 最後,我們必須指定子網的一個IP範圍(例如從10.8.0.50開始,到10.8.0.100結束),以便於分配給連接的客戶端。
# 如果你不是乙太網橋接模式,直接註釋掉這行指令即可。
;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100

# 該指令僅針對使用DHCP代理的乙太網橋接模式,
# 此時客戶端將請求伺服器端的DHCP伺服器,從而獲得分配給它的IP地址和DNS伺服器地址。
#
# 在此之前,你也需要先將乙太網網卡介面和TAP介面進行橋接。
# 註意:該指令僅用於OpenVPN客戶端,並且該客戶端的TAP適配器需要綁定到一個DHCP客戶端上。
;server-bridge

# 推送路由信息到客戶端,以允許客戶端能夠連接到伺服器背後的其他私有子網。
# (簡而言之,就是允許客戶端訪問VPN伺服器自身所在的其他區域網)
# 記住,這些私有子網也要將OpenVPN客戶端的地址池(10.8.0.0/255.255.255.0)反饋回OpenVPN伺服器。
;push "route 192.168.10.0 255.255.255.0"
;push "route 192.168.20.0 255.255.255.0"

# 為指定的客戶端分配指定的IP地址,或者客戶端背後也有一個私有子網想要訪問VPN,
# 那麼你可以針對該客戶端的配置文件使用ccd子目錄。
# (簡而言之,就是允許客戶端所在的區域網成員也能夠訪問VPN)

# 舉個例子:假設有個Common Name為"Thelonious"的客戶端背後也有一個小型子網想要連接到VPN,該子網為192.168.40.128/255.255.255.248。
# 首先,你需要去掉下麵兩行指令的註釋:
;client-config-dir ccd
;route 192.168.40.128 255.255.255.248
# 然後創建一個文件ccd/Thelonious,該文件的內容為:
#     iroute 192.168.40.128 255.255.255.248
#這樣客戶端所在的區域網就可以訪問VPN了。
# 註意,這個指令只能在你是基於路由、而不是基於橋接的模式下才能生效。
# 比如,你使用了"dev tun""server"指令。

# 再舉個例子:假設你想給Thelonious分配一個固定的IP地址10.9.0.1。
# 首先,你需要去掉下麵兩行指令的註釋:
;client-config-dir ccd
;route 10.9.0.0 255.255.255.252
# 然後在文件ccd/Thelonious中添加如下指令:
#   ifconfig-push 10.9.0.1 10.9.0.2

# 如果你想要為不同群組的客戶端啟用不同的防火牆訪問策略,你可以使用如下兩種方法:
# (1)運行多個OpenVPN守護進程,每個進程對應一個群組,併為每個進程(群組)啟用適當的防火牆規則。
# (2) (進階)創建一個腳本來動態地修改響應於來自不同客戶的防火牆規則。
# 關於learn-address腳本的更多信息請參考官方手冊頁面。
;learn-address ./script

# 如果啟用該指令,所有客戶端的預設網關都將重定向到VPN,這將導致諸如web瀏覽器、DNS查詢等所有客戶端流量都經過VPN。
# (為確保能正常工作,OpenVPN伺服器所在電腦可能需要在TUN/TAP介面與乙太網之間使用NAT或橋接技術進行連接)
;push "redirect-gateway def1 bypass-dhcp"

# 某些具體的Windows網路設置可以被推送到客戶端,例如DNS或WINS伺服器地址。
# 下列地址來自opendns.com提供的Public DNS 伺服器。
;push "dhcp-option DNS 208.67.222.222"
;push "dhcp-option DNS 208.67.220.220"

# 去掉該指令的註釋將允許不同的客戶端之間相互"可見"(允許客戶端之間互相訪問)。
# 預設情況下,客戶端只能"看見"伺服器。為了確保客戶端只能看見伺服器,你還可以在伺服器端的TUN/TAP介面上設置適當的防火牆規則。
;client-to-client

# 如果多個客戶端可能使用相同的證書/私鑰文件或Common Name進行連接,那麼你可以取消該指令的註釋。
# 建議該指令僅用於測試目的。對於生產使用環境而言,每個客戶端都應該擁有自己的證書和私鑰。
# 如果你沒有為每個客戶端分別生成Common Name唯一的證書/私鑰,你可以取消該行的註釋(但不推薦這樣做)。
;duplicate-cn

# keepalive指令將導致類似於ping命令的消息被來回發送,以便於伺服器端和客戶端知道對方何時被關閉。
# 每10秒鐘ping一次,如果120秒內都沒有收到對方的回覆,則表示遠程連接已經關閉。
keepalive 10 120

# 出於SSL/TLS之外更多的安全考慮,創建一個"HMAC 防火牆"可以幫助抵禦DoS攻擊和UDP埠淹沒攻擊。
# 你可以使用以下命令來生成:
#   openvpn --genkey --secret ta.key
#
# 伺服器和每個客戶端都需要擁有該密鑰的一個拷貝。
# 第二個參數在伺服器端應該為'0',在客戶端應該為'1'。
;tls-auth ta.key 0 # 該文件應該保密

# 選擇一個密碼加密演算法。
# 該配置項也必須複製到每個客戶端配置文件中。
;cipher BF-CBC        # Blowfish (預設)
;cipher AES-128-CBC   # AES
;cipher DES-EDE3-CBC  # Triple-DES

# 在VPN連接上啟用壓縮。
# 如果你在此處啟用了該指令,那麼也應該在每個客戶端配置文件中啟用它。
comp-lzo

# 允許併發連接的客戶端的最大數量
;max-clients 100

# 在完成初始化工作之後,降低OpenVPN守護進程的許可權是個不錯的主意。
# 該指令僅限於非Windows系統中使用。
;user nobody
;group nobody

# 持久化選項可以儘量避免訪問那些在重啟之後由於用戶許可權降低而無法訪問的某些資源。
persist-key
persist-tun

# 輸出一個簡短的狀態文件,用於顯示當前的連接狀態,該文件每分鐘都會清空並重寫一次。
status openvpn-status.log

# 預設情況下,日誌消息將寫入syslog(在Windows系統中,如果以服務方式運行,日誌消息將寫入OpenVPN安裝目錄的log文件夾中)。
# 你可以使用log或者log-append來改變這種預設情況。
# "log"方式在每次啟動時都會清空之前的日誌文件。
# "log-append"這是在之前的日誌內容後進行追加。
# 你可以使用兩種方式之一(但不要同時使用)。
;log         openvpn.log
;log-append  openvpn.log

# 為日誌文件設置適當的冗餘級別(0~9)。冗餘級別越高,輸出的信息越詳細。
#
# 0 表示靜默運行,只記錄致命錯誤。
# 4 表示合理的常規用法。
# 56 可以幫助調試連接錯誤。
# 9 表示極度冗餘,輸出非常詳細的日誌信息。
verb 3

# 重覆信息的沉默度。
# 相同類別的信息只有前20條會輸出到日誌文件中。
;mute 20

 

作者:軟體指南針(http://www.softown.cn),轉載請保留出處!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 原文發表於cu:2017-02-10 參考文檔: Elasticsearchyum文檔:https://www.elastic.co/guide/en/elasticsearch/reference/current/rpm.html Logstashyum文檔:https://www.elastic ...
  • 一,環境說明 dell vostro 1400筆記本,winxp sp3操作系統,ubuntu-9.10-desktop-i386.iso 寫這篇隨筆的時候我用的已經是ubuntu了。 我是在我的移動硬碟上的I盤中安裝的ubuntu,所以我先把這個盤的內容移到其它盤上了。 二,安裝過程 1,首先進入 ...
  • 用su 獲取root許可權 用yum -y install dhcp命令安裝dhcp服務(yum是基於RPM包管 理,自動下載RPM包並且安裝) 查看安裝後生成的配置文件 rpm -qc dhcp 編輯dhcp的配置文件 vim /etc/dhcp/dhcpd.conf 全局配置詳情: 使用subne ...
  • 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 在上一節分析輸入子系統內的intput_handler軟體處理部分後,接下來我們開始寫input_dev驅動 本節目標: 實現鍵盤驅動,讓開發板的4個按鍵代表鍵盤中的L、S、空格鍵、回車鍵 1.先來介紹以下幾個結構體使用和函數,下麵代碼中會用到 ...
  • 一、前言 Linux操作系統至1991年10月5日誕生以來,就其開源性和自由性得到了很多技術大牛的青睞,每個Linux愛好者都為其貢獻了自己的一份力,不管是在Linux內核還是開源軟體等方面,都為我們後來人提供了一個良好的學習和研究環境。 本文主要通過裁剪現有Linux系統,根據自己的需要,打造一個 ...
  • 本文目錄:1.1 安裝Ansible1.2 配置Ansible 1.2.1 環境配置 1.2.2 SSH互信配置 1.2.3 簡單測試1.3 inventory Ansible是一種批量、自動部署工具,不僅可以批量,還可以自動。它主要基於ssh進行通信,不要求客戶端(被控制端)安裝ansible。 ...
  • ...
  • 對於系統和網路管理員來說每天監控和調試Linux系統的性能問題是一項繁重的工作。監控和保持系統啟動並運行是很不容易的一件事。因此[實驗樓](https://www.shiyanlou.com/courses/)介紹部分linux的系統監控命令。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...