如何在openbsd 5.1-5.3上部署open*** 服务器?
首先說明:雖然是原創(chuàng),但有部分內(nèi)容是借鑒了這位兄弟的文章:
http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=27673206&id=3772566
按照這篇文檔,你可以部署成功,但其中一些細(xì)節(jié)沒有描述清楚。或者有后遺癥,導(dǎo)致你的*** client無法ping通內(nèi)網(wǎng)。好了,下面整理了一下。以備查閱:
首先安裝系統(tǒng),這里說明是OPENBSD 5.1 或5.3. 如果是5.5,有些命令無法執(zhí)行。特別要注意。
環(huán)境說明:
1,open*** server: openbsd 5.1, 雙網(wǎng)卡,外網(wǎng)卡ip:218.4.144.1/24,內(nèi)網(wǎng)卡:192.168.0.1/24。無需配置網(wǎng)關(guān)。
2,openinside:freebsd 10 ,單網(wǎng)卡:192.168.0.2/24,gateway:192.168.0.1
3.openoutside:MS XP,單網(wǎng)卡: 218.4.144.2/24,no gateway。
系統(tǒng)安裝和基本配置我就不描述了,從部署open***開始。
1.1 安裝open***
? ? 有兩種方法,一種是下載所需的軟件到本地進(jìn)行安裝,另外一種是使用pkg_add進(jìn)行安裝。因為我已開始使用openbsd 5.5上安裝open***,出現(xiàn)了很多問題,所以不建議搭建在本地編譯源代碼安裝。
? ? 使用pkg_add安裝的方法是:把open***配置為可以訪問internet,執(zhí)行下面的操作。
? ??#?export PKG_PATH=ftp://ftp.jaist.ac.jp/pub/OpenBSD/5.3/packages/i386/? ?//這個地址可以自己到openbsd網(wǎng)站上查找。?
?????#?ftp -m -V $PKG_PATH/index.txt //下載index.txt文件到本地
?????#?grep open*** index.txt ? ? ? ? //使用grep進(jìn)行搜索open***文件。沒有yum那么方便。
????-rw-r--r--? 1 421? 111????? 336934 Feb 26 09:19:36 2013 open***-2.2.2p1.tgz
????-rw-r--r--? 1 421? 111?????? 49144 Feb 26 11:00:56 2013 open***-auth-ldap-2.0.3.tgz
????-rw-r--r--? 1 421? 111??????? 4689 Feb 26 11:57:55 2013 open***_bsdauth-7p0.tgz
????#?pkg_add open***-2.2.2p1.tgz ? ?//找到可用的版本進(jìn)行安裝。安裝過程類似于yum。會自動安裝依賴軟件。
1.2 open*** 配置
1.open***默認(rèn)安裝完成后是不會在/etc目錄下生成配置文件,需從/usr/local/share/examples/open***/ 復(fù)制過來
????#mkdir -p /etc/open***/easy-rsa
????#cp /usr/local/share/examples/open***/easy-rsa/2.0/* /etc/open***/easy-rsa ?
? ? //openbsd 5.5安裝open***后,是不會在/usr/local/share/examples/open***/下面生成easy-rsa的
2.默認(rèn)情況下OpenBSD安裝Open×××?xí)鄙僖粋€文件whichopensslcnf,用vi編輯一下即可。編輯的位置為:/etc/open***/easy-rsa。其實就是新建一個文件。并把下面的內(nèi)容添加到whichopensslcnf中。
#vi whichopensslcnf
#-Begin----------------------
#!/bin/sh
if [ "$OPENSSL" ]; then
??????? if $OPENSSL version | grep 1.0.0 > /dev/null; then
??????????????? echo "$1/openssl-1.0.0.cnf"
??????? else
??????????????? echo "$1/openssl.cnf"
??????? fi
else
??????? echo "$1/openssl-1.0.0.cnf"
fi
exit 0
#-End---------------------
授于可執(zhí)行權(quán)限
#chmod +x whichopensslcnf
3.編輯 /etc/open***/easy-rsa/vars
#?cd? /etc/open***/easy-rsa/
#?vi vars ? ? ? ? ? ? ?//根據(jù)需要修改下面的選項。如果不修改,并不影響后面的配置和使用效果。
export KEY_COUNTRY=CN????? (國家)
export KEY_PROVINCE=SD?????? (省份)
export KEY_CITY=QD??????????? (城市)
export KEY_ORG="Open×××-Server"??? (組織或公司)
export KEY_EMAIL="demo@demo.org"?? (電子郵箱)
4.令vars 生效。兩個點之間有個空格不然會出錯(在Linux下,這句話是source ./vars,但是OpenBSD默認(rèn)使用ksh,沒有source,用點可以起到同樣作用。)
#. ./vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/open***/easy-rsa/2.0/keys
5.清理以前產(chǎn)生的舊密鑰
#./clean-all ? ? ? ? ? ? ? ? ? ? ? ? //openbsd 5.5無法執(zhí)行該命令。
6.創(chuàng)建根ca證書,完成后會看到keys文件夾,里面有ca.*文件,一路回車即可
#./build-ca ? ? ? ? ? ? ? ? ? ? ? ? ??? //openbsd 5.5無法執(zhí)行該命令。
7.生成用于服務(wù)器的密鑰,不妨給服務(wù)器起名為server,
#./build-key-server server ? ? ? ? ? ?? //openbsd 5.5無法執(zhí)行該命令。
一路回車,最后兩個y/n均回答y ? ? ? ? ?//根據(jù)需要,填入自己的內(nèi)容。默認(rèn)是client,如果修改,后面的相關(guān)內(nèi)容也要修改。仔細(xì)看。
8.在/etc/open***/easy-rsa/keys目錄中生成dh1024.pem文件。
#./build-dh
9.防止 DoS *** 和 UDP 端口 flooding,生成一個"HMAC firewall",在/etc/open***/easy-rsa/keys目錄中生成。
#?cd? /etc/open***/easy-rsa/keys?&&?open*** --genkey --secret ta.key
10.現(xiàn)在生成客戶端密鑰,比如用戶名是 xisxy(如果有100個用戶,就得生成100個密鑰)
#?cd? /etc/open***/easy-rsa/
#?./build-key xisxy
11.配置open***服務(wù)器端配置文件。
在/usr/local/share/examples/open***/sample-config-files/ 目錄中有配置文件的模板文件。把服務(wù)器配置文件 server.conf 復(fù)制到 /etc/open***/
#?cp /usr/local/share/examples/open***/sample-config-files/server.conf /etc/open***
#?cd /etc/open***/
#?vi server.conf
(修改為如下內(nèi)容)
port 1194????????? #端口
proto tcp????????? # 協(xié)議,udp 在大部分環(huán)境中運行良好,如需要玩聯(lián)網(wǎng)游戲可設(shè)為udp。
dev tun0?????????? # 虛擬網(wǎng)絡(luò)設(shè)備
ca /etc/open***/easy-rsa/keys/ca.crt????????? # 根 ca證書,注意路徑。默認(rèn)是沒有指明路徑的。
cert /etc/open***/easy-rsa/keys/server.crt??? # 服務(wù)器證書,注意路徑。默認(rèn)是沒有指明路徑的。
key /etc/open***/easy-rsa/keys/server.key???? # 服務(wù)器密鑰,注意路徑。默認(rèn)是沒有指明路徑的。
dh /etc/open***/easy-rsa/keys/dh1024.pem????? # Diffie hellman parameters,注意路徑。默認(rèn)是沒有指明路徑的。
server 10.8.0.0 255.255.255.0???????????????? # ××× 虛擬網(wǎng)段,這里非常重要。這個網(wǎng)段是給***客戶端使用的,不是*** server內(nèi)網(wǎng)所直連的網(wǎng)段。
push "route 192.168.0.0 255.255.255.0" ? ? ?#為*** client添加路由。告訴*** client,如果要訪問192.168.0.0/24網(wǎng)段,要把數(shù)據(jù)包發(fā)送給*** server,默認(rèn)是10.8.0.1.具體的ip要看你上面一樣參數(shù)的設(shè)置。
ifconfig-pool-persist ipp.txt???????????????? #從新連接后分配剛剛使用過的ip地址
push "redirect-gateway def1 bypass-dhcp"???#改變默認(rèn)網(wǎng)關(guān),要做代理這一點很重要。可以把open***服務(wù)器當(dāng)作網(wǎng)關(guān),上網(wǎng)都通過open***服務(wù)器上網(wǎng)(PF NAT功能)
push "dhcp-option DNS 8.8.8.8"??????? #設(shè)置client的DNS服務(wù)器,還可以高為 10.8.0.1 ,這時open***服務(wù)器本身充當(dāng)DNS服務(wù)器了。
#client-to-client? # 在這里不需要虛擬網(wǎng)中的機器互相看到服務(wù)器以外的機器,所以要注釋掉
keepalive 10 120?????????????????? #每10秒ping一次,120秒不響應(yīng),從新連接
tls-auth /etc/open***/easy-rsa/keys/ta.key 0??? #防止 DoS *** 和 UDP 端口 flooding,生成一個"HMAC firewall",注意服務(wù)器端是0,client端是1
comp-lzo??????????????????????????? # 用lzo壓縮
user _open***group _open***?
persist-key
persist-tun
status open***-status.log????#? 每分中更新open***狀態(tài)記錄
verb 3
1.3、測試服務(wù)器
#?/usr/local/sbin/open*** --config /etc/open***/server.conf --cd /etc/open*** & ?//啟動open***服務(wù)。即監(jiān)聽1194端口。
最后出現(xiàn)Initialization Sequence Completed ,表示open***服務(wù)器啟動成功。
讓服務(wù)器自動啟動open***服務(wù),
#?vi /etc/rc.local???????????? #添加如下一行
/usr/local/sbin/open*** --config /etc/open***/server.conf --cd /etc/open*** &
Q:如果修改了上面的server.conf配置文件,如何重新啟動open***服務(wù)?
A:使用jobs查看當(dāng)前后天程序。使用fg把程序調(diào)入到前臺,然后按ctrl+c結(jié)束程序。如果有多個jobs,根據(jù)編號,使用fg 編號 的方式調(diào)入到前臺,比如
#fg 2
1.4、配置open***服務(wù)器pf防火墻,實現(xiàn)NAT功能。
1.開啟IP轉(zhuǎn)發(fā)功能
#?sysctl net.inet.ip.forwarding=1
如要總是開啟此功能,可在/etc/sysctl.conf文件中,把net.inet.ip.forwarding=1前面的#去掉即可
#?vi?/etc/sysctl.conf
net.inet.ip.forwarding=1
2.通過自帶PF實現(xiàn)NAT
#?vi /etc/pf.conf
加入如下內(nèi)容
ext_if="bge0"
int_if="tun0"
internal_net="10.8.0.0/24"
match out on $ext_if from $internal_net to any nat-to $ext_if
pass on em0 proto tcp from any to any port ?1194 ?//允許外部訪問open***外網(wǎng)口的1194端口。默認(rèn)pf.conf配置文件中有pass語句。
這里要說明一下,這里的rule,如果才能精細(xì)化控制***client訪問內(nèi)網(wǎng)資源?
如果要細(xì)化控制訪問,注意規(guī)則距離如下:
pass proto tcp from 10.8.0.0/24 to 192.168.0.0/24 port 22
說明:10.8.0.0/24,是分配給***client使用的。192.168.0.0/24是*** server的內(nèi)網(wǎng)網(wǎng)段。
根據(jù)此規(guī)則進(jìn)行其他rule編寫。
3.使新的規(guī)則生效
檢驗寫的規(guī)則是否有問題:
#pfctl -nf /etc/pf.conf
沒有問題在加載。
#?pfctl -f /etc/pf.conf?
查看加載了哪些規(guī)則:
pfctl -vf /etc/pf.conf
1.5、client的安裝與配置
1.類unix client
在/usr/local/share/examples/open***/sample-config-files/目錄中有配置文件的模板文件。把client配置文件client.conf復(fù)制到/etc/open***/,沒有該文件夾就新建一個。
#?cp /usr/local/share/examples/open***/sample-config-files/client.conf /etc/open***/
# vi?/etc/open***/client.conf
-------------------------------------------
client
dev tun0
proto tcp
remote ***.***.***.*** 1194???# ***.***.***.***部分為你open*** server 外網(wǎng)的IP地址或域名
resolv-retry infinite
nobind
user nobody
group nobody
persist-key
persist-tun
ca /etc/open***/easy-rsa/keys/ca.crt
cert /etc/open***/easy-rsa/keys/xisxy.crt ? //上面創(chuàng)建ca時,自己所填寫的內(nèi)容。
key /etc/open***/easy-rsa/keys/xisxy.key ? ?//上面創(chuàng)建ca時,自己所填寫的內(nèi)容。
tls-auth /etc/open***/easy-rsa/keys/ta.key 1??#注意服務(wù)器端是0,client端是1
comp-lzo
verb 3
--------------------------------------------------
測試一下client。
#?open*** /etc/open***/client.conf
?
最后出現(xiàn)Initialization Sequence Completed,表示open*** client成功連接到服務(wù)器。
分配的虛擬專用網(wǎng)絡(luò)IP地址為10.8.0.4。現(xiàn)在就可用虛擬專用網(wǎng)絡(luò)中的IP地址來訪問訪問服務(wù)器。
訪問外部網(wǎng)頁等會透過×××服務(wù)器NAT來實現(xiàn)。
使用ping測試一下訪問內(nèi)網(wǎng)的 client。
2.windows client
安裝文件(for windows): open***-2.0.9-gui-1.0.3-install.exe 客戶端的版本沒有什么限制,最新版也最好。
下載地址:http://www.open***.se/download.html
復(fù)制客戶端密鑰(client.crt和client.key)和ca.crt和ta.key復(fù)制到Client_PC的C:\Program Files\Open×××\config\ 目錄。
還要把C:\Program Files\Open×××\sample-config\client.o***文件復(fù)制到
C:\Program Files\Open×××\config\ 目錄。
直接點擊C:\Program Files\Open×××\config\client.o***用記事本編輯配置文件。
這是PC1的client配置文件。
----------------------------------------------------
client ? ? ? ? ? ? ? ? ? ? ? ? ?//這個就是client,不要修改。
dev tun0 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
proto tcp
remote ***.***.***.*** 1194?????# ***.***.***.***部分為你open*** server 外網(wǎng)的IP地址或域名
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert xisxy.crt ? ? ? ? ? ? ? ? ? ???//上面創(chuàng)建ca時,自己所填寫的內(nèi)容。
key xisxy.key ? ? ? ? ? ? ? ? ? ? ???//上面創(chuàng)建ca時,自己所填寫的內(nèi)容。
tls-auth ta.key 1??#注意client端是1
comp-lzo
verb 3
------------------------------------------------
雙擊桌面上的Open××× GUI圖標(biāo),然后在右下角任務(wù)欄的圖標(biāo)上右擊,選擇connect。連接成功后,使用ping測試一樣內(nèi)網(wǎng)連通性把。
祝你好運。
最后,說明一下,如果按照上文配置成功后,客戶端在連接的時候,不用輸入密碼就可以連接到open***服務(wù)器了。這有一定的安全隱患。如何配置呢?
其實無需配置。只要在客戶端Open××× GUI圖標(biāo)右擊,選擇change password,原密碼為空,輸入兩次新密碼就ok了。保持后,再次連接時就需要密碼驗證了。
轉(zhuǎn)載于:https://blog.51cto.com/swenzhao/1582585
總結(jié)
以上是生活随笔為你收集整理的如何在openbsd 5.1-5.3上部署open*** 服务器?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Microsoft.CSharp.CSh
- 下一篇: 转:如何提高自己的归纳总结能力?