[HOME][NOTE] OpenVPN 設定備忘
8 月 07
補充: 如果想修改某個 client 的固定IP, 要修改 ipp.txt 這個檔, 而這個檔, 會被放到 /var/run/openvpn 目錄底下
OpenVPN under Fedora 7
[安裝]
yum install openvpn
會在 /etc 目錄下建立一個 openvpn 的目錄, 但裡面不會有任何東西,
要先到 /usr/share/openvpn/easy-rsa 目錄底下去複製必要檔案出來。
接下來參考網中人的 OpenVPN 建置方案 一文
出處 http://www.study-area.org/tips/openvpn.html
以下幾乎全部照抄 netman 的步驟
[複製設定範例]
cp -rp /usr/share/openvpn/easy-rsa/2.0/ /etc/openvpn/easy-rsa/
cp /usr/share/doc/openvpn-2.1/sample-config-files/server.conf /etc/openvpn/
[設定 CA]
cd /etc/openvpn/easy-rsa/
vi vars
export KEY_COUNTRY=TW
export KEY_PROVINCE=Taiwan
export KEY_CITY=I-Lan
export KEY_ORG=TWAREN
export KEY_EMAIL=”joechen@niu.edu.tw”
. ./vars (第一個點的後面要加一個空白)
./clean-all # 這個指令會清掉 /etc/openvpn/easy-rsa/keys 目錄裡的密鑰, 除非你要重新做 OpenVPN 的 CA, 不然是不需要做這步的
註: 在 vars 檔案裡面, 可以依需要修改下列三項設定
export KEY_SIZE=2048 # 密鑰強度
export CA_EXPIRE=3650 # CA 過期期限
export KEY_EXPIRE=3650 # 密鑰過期期限
[建置 root CA]
./build-ca
(會問幾個問題, 預設是不需要再另外輸入了)
因為部分系統關係, 不會自建出 index.txt 及 serial, 所以要自行建立
touch /etc/openvpn/easy-rsa/keys/index.txt
touch /etc/openvpn/easy-rsa/keys/serial
並且要在 serial 這個檔案裡先寫入 01 , 表示下次要建立的客端金鑰次序,然後再進行以下步驟
[建置 server key 及 crt]
./build-key-server vpnsrv # vpnsrv 這個名字可以自己依喜愛來取
(同樣地, 會問幾個問題, 預設是不需要再另外輸入了, 最後問兩次 y/n 時, 都回答 y 即可)
[建置 Diffie Hellman 參數]
./build-dh
[安裝 server 所需的 CA 文件]
cd /etc/openvpn/easy-rsa
cp keys/ca.crt ../
cp keys/dh2048.pem ../ # 若先前在 vars 檔案, 是設定 export KEY_SIZE=1024 的話, 檔名就會是 dh1024.pem
cp keys/vpnsrv.key ../
cp keys/vpnsrv.crt ../
[配置 server 設定檔]
cd /etc/openvpn
vi server.conf
修改內容如下:
— code top —
dh dh2048.pem
dev tap
;dev tun
ca ca.crt
cert vpnsrv.crt
key vpnsrv.key
server 192.168.203.0 255.255.255.0 # 設定 OpenVPN 將使用的網段
— code end —
好啦, 以上就是 Server 部分囉
接下來是 client 端的設定
假設你的 client 是 windows 作業系統
可以先上網去下載 http://openvpn.se/download.html
裡的 stable 版本的 openvpn-2.0.9-gui-1.0.3-install.exe
安裝在你的 windows 系統裡
預設, 程式將會被安裝在 C:Program FilesOpenVPN 目錄底下
接下來我們開啟命令視窗模式(cmd.exe)來做必要的修改
[開始]->[執行]-> 輸入 cmd
cd C:Program FilesOpenVPNeasy-rsa
edit vars.bat
同樣的, 把檔案最後面的資訊改成, 與 Server 上的資訊相同
set KEY_COUNTRY=TW
set KEY_PROVINCE=Taiwan
set KEY_CITY=I-lan
set KEY_ORG=TWAREN
set KEY_EMAIL=joechen@niu.edu.tw
set KEY_SIZE=2048 # 若有改, 則要把 1024 取代成 2048
註: 以上的編輯動作, 當然也可以利用記事本來開啟
([開始]->[執行]-> 輸入 notepad cd C:Program FilesOpenVPNeasy-rsavars)
[建置 CA 環境]
cd C:Program FilesOpenVPNeasy-rsa
vars
[建置 client key 與 crs]
build-key vpnclt1
過程中, 同樣會問幾個問題, 不過, 特別要注意, 看到以下這行時
Common Name (eg, your name or your server’s hostname) []:
要自行輸入 client 端將要使用使用的名稱, 在製作 key 時, 才能正確地被 Server 識別
這裡我們是輸入 vpnclt1, 如下
Common Name (eg, your name or your server’s hostname) []: vpnclt1
其餘不用改。
在過程的最後, 可能會出現一些奇怪的 Error, 可以不用理會它。
[提交 crs 給主機簽核]
將 C:Program FilesOpenVPNeasy-rsakeys 目錄底下的 vpnclt1.csr 檔案,
上傳到主機的 /etc/openvpn/easy-rsa/keys 目錄底下
cd /etc/openvpn/easy-rsa/
./sign-req vpnclt1
過程中, 需要回答兩次 yes
(可能會遇到 chmod 的錯誤訊息, 不用理會)
[安裝 CA 文件]
以上過程後, 可以得到 vpnclt1.crt 這個檔案 (在 /etc/openvpn/easy-rsa/keys 目錄裡)
接下來, 把 Server 上的 vpnclt1.crt 及以 ca.crt 這兩個檔案下載回 windows 作業系統
並存放在 C:Program FilesOpenVPNconfig 目錄裡
[設定 client ]
copy C:Program FilesOpenVPNsample-configclient.ovpn C:Program FilesOpenVPNconfig
cd C:Program FilesOpenVPNconfig
notepad client.ovpn
(若是你的 OpenVPN GUI 程式有執行的話, 在常駐列裡, 會有 OpenVPN 的小圖示, 按右鍵 –> Edit Config)
設定內容如下,
— config Top —
dev tap
;dev tun
dev-node OpenVPN_Tap # 自己將 OpenVPN 的虛疑網卡 Tap32 改名為 OpenVPN_Tap
proto udp
remote 111.222.111.222 1194 # 設定連線的 server 及 port
ca ca.crt
cert vpnclt1.crt
key vpnclt1.key
ns-cert-type server
comp-lzo
— config End —
# 啟動 openvpn client
右下角(OpenVPN GUI)
右鍵–> Connect
最後, 感謝 Netman….
接下來, 模擬一下, 人到上海, 要怎麼上台灣的網站? (是的, 三子, 這部分原創是為你寫的)
先想好目前的網路狀況
假設 VPN 主機的實際 IP 是 220.134.149.165 (虛構的)
然後, 你的 NB 己安裝好 client 的必要程式, 並做好設定, 並且在上海的網路裡取得 IP
(如: 218.123.123.123, 而且 gateway 為 218.123.123.254)
當你人在外頭, 利用 VPN 連回主機後, 會取得一組私有IP(依 VPN 主機設定檔而定)
假設 VPN 主機的私有IP是發 192.168.203.2 給你的 NB 使用
此時, 要讓 VPN client 透過 VPN Server 連線, 就要依賴 NAT 功能了
也就是讓 VPN Server 上, 再加上 NAT 功能
像我的 Server 是 Trustix Secure Linux 3.0.5, 我另外再下載 shorewall 做為我的防火牆
shorewall 本身設定上有支援 OpenVPN 及 NAT 功能, 經過設定後, 即可使 client 透過 NAT 功能, 由 Server 連線出去
以 NB 的角度來看, NB 上會有兩個網路介面, 一個是實際的網卡(區域網路), 一個是虛擬的網卡(OpenVPN_Tap)
一般的 Default Gateway 應該都是設在實際網卡上, 我們不要去改變 Default Gateway, 不然就整個網路就會都斷掉了
留著原本的 Default Gateway, 只針對想要連線的網址去設定 route add 就好
若覺得每每要到新的網站就得加一筆 route add 很煩, 那可以設 Default Gateway 在虛擬網卡上
只是在設定之前, 要先加一筆 route add 在實際網卡上, 也就是
route add 220.134.149.165 mask 255.255.255.255 218.123.123.254
這可以用來保證, 至少連到 VPN Server 這台機器的連線 routing 不會斷掉
再來, 就把 Default Gateway 設成 192.168.203.1 即可
在這個情況下, 所有連線將會全部透過 VPN Server 主機連線出去, 也就是台灣連不上的大陸網站, 同樣你也連不上了
好啦, 用文字不是很好說明, 我已經盡力了, 有寫不清楚的, 麻煩 MSN 我吧
安裝 Tap32
設定 ip range, by port (udp/tcp)
Firewall (Shorewall 可配合 OpenVPN)
route add 設定 (要注意不要因為 default route 而斷掉原來的網路, 而使用 VPN 自己失效了)
額外閱讀: OpenVPN 用戶端使用帳號/密碼的驗證方式
出處: http://itblog.blogdns.net/index.php?load=read&id=85
因為 OpenVPN 採用 CA 認證的方式, 對於某些情況下較不方便, 故有採用 ID/Password 的方式來登錄 Server 的方法。
— 以下 NAT 功能, 取自網友的文章 —
出處: http://blog.candyz.org/20070904/1536
作者: Candyz
標題: fedora enable NAT
如果你是用 system-config-securitylevel 來啟用 firewall,但是這支程試並沒有辦法設定要不要開啟 NAT
所以,還是要手動自己在 /etc/sysctl.conf 檔案裡把
net.ipv4.ip_forward = 0
改成
net.ipv4.ip_forward = 1
然後執行 sysctl -p
並且 vi /etc/sysconfig/iptables
在最後面補上一段: (假設我用的網段是 10.10.10.0/24)
*nat
:PREROUTING ACCEPT [491:43530]
:POSTROUTING ACCEPT [2:120]
:OUTPUT ACCEPT [43:3236]
-A POSTROUTING -s 10.10.10.0/255.255.255.0 -j MASQUERADE
COMMIT
但是只加這一行是不夠的,還得把
-A FORWARD -j REJECT –reject-with icmp-host-prohibited
改成
-A FORWARD -j ACCEPT
最後,重新啟動 iptables 就 OK 了
— 以上內容, 取自網友 Candyz 文章 —
補充:
就我自己的經驗是, 如果 /etc/sysconfig/iptables 這個檔案的內容有
-A INPUT -j REJECT –reject-with icmp-host-prohibited
-A FORWARD -j REJECT –reject-with icmp-host-prohibited
就幹掉吧, 它會讓路由失效。