在Ubuntu下配置OpenVPN
首先確保Ubuntu的apt-get能夠找到openvpn的包
sudo apt-get update
安裝OpenVPN包
sudo apt-get install openvpn
建立OpenVPN的設定檔,範例在以下路徑可以找到
/usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz-----------------------------------------------常規參數解釋port 1194 : openVPN所監聽的連接埠proto udp : 使用udp協議dev tun : 使用路由隧道方式(Routed IP tunnel),要使用橋接方式(ethernet bridging tunnel) 寫 dev tapca /etc/openvpn/keys/ca.crt : CA憑證路徑
cert /etc/openvpn/keys/server.crt : server憑證路徑
key /etc/openvpn/keys/server.key : server key 路徑dh /etc/openvpn/keys/dh1024.pem : Diffie Hellman parameters 檔案server 192.168.200.0 255.255.255.0 : 服務端配置模式,192.168.200.1會留給自己,並向用戶端 指派192.168.200.0/24的地址ifconfig-pool-persist /var/log/openvpn/ipp.txt:通過這個檔案來保持client所得到的IP,當client重新串連時 保證獲得和上次同樣的IPpush "route 192.168.150.0 255.255.255.0" :允許client訪問server後端的私網地址,如192.168.150.0/24client-config-dir ccd :指定client-config目錄名稱
route 192.168.153.0 255.255.255.0 :允許一個特有的私網地址訪問VPN,比如192.168.153.0/24keepalive 10 120 :每個10秒鐘ping一次,如果120秒沒有回應則認為client已經 down了comp-lzo :在VPN串連上採用壓縮演算法,必須server/client同時開通user nobody :為了安全,降低daemon的許可權
group nobody :為了安全,降低daemon的許可權persist-key :通過keepalive檢測逾時後,重新啟動VPN,不重新讀取 keys, 保留第一次使用的keyspersist-tun :通過keepalive檢測逾時後,重新啟動VPN,一直保持tun或者 tap裝置是linkup的,否則網路連接會先linkdown然後linkupstatus /var/log/openvpn/openvpn-status.log :VPN狀態日誌log-append /var/log/openvpn/openvpn.log :VPN系統日誌verb 3 :輸出資訊等級,3為普通
利用easy-rsa建立認證和key,指令碼在以下路徑可以找到
/usr/share/doc/openvpn/examples/easy-rsa
將easy-rsa 複製到/etc/openvpn/easy-rsa
建立CA
首先需要更改easy-rsa下的vars環境變數
export KEY_COUNTRY=CN
export KEY_PROVINCE=SH
export KEY_CITY=Shanghai
export KEY_ORG="My company"
export KEY_EMAIL="admin@mycompany.com.cn"
然後在easy-rsa依次執行
source vars
./clean-all
./build-ca
建立server認證和key
在easy-rsa執行
./build-key-server server
建立client認證和key
在easy-rsa執行
./build-key client01
產生Generate Diffie Hellman parameters
在easy-rsa執行
./build-dh
將以下檔案copy到/etc/openvpn/keys
ca.crt
dh1024.pem
server.crt
server.key
將tun調入module
sudo modprobe tun
ip-forward設定允許轉寄,sudo如果不行就只能用root來做了
sudo echo “1” > /proc/sys/net/ipv4/ip_forward
確認nobody組存在,沒有的話建立一個nobody組。(這裡卡了半天)
最後啟動服務
sudo /etc/init.d/openvpn start