前段時間寫了一篇有關open***搭建與內網機器通訊的文章,那篇文章是基於服務器單網卡進行配置的,文章連接爲《爛泥:open*** tun模式下客戶端與內網機器通訊》。ubuntu
這篇文章咱們再來介紹下雙網卡open***客戶端與內網機器通訊的配置。centos
1、需求說明安全
爲何要寫open***雙卡的配置?服務器
是由於通常IDC機房都是提供多網卡服務器,同時目前比較流行的雲服務器阿里雲提供的也是雙網卡,而騰訊雲以及亞馬遜的aws都是單網卡。各個雲服務器商的網卡配置個數,以下圖:tcp
2、業務要求ide
如今IDC機房那邊有一臺服務器配A配置的是雙網卡,一塊配置的是公網IP(173.33.141.50),一塊配置的是內網IP(10.10.1.17)。另外在這個IDC機房內的其餘服務器,爲了安全起見,配置都是的內網IP10.10.1.0/24網段的。測試
如今要求很簡單,經過服務器A管理內網的其餘服務器。阿里雲
3、解決方案spa
爲了達到上述要求,咱們能夠在服務器A上搭建open***服務,而後客戶端經過這臺open***服務器做爲跳板機管理內網服務器。3d
open***的搭建很簡單,能夠參考這篇文章《爛泥:ubuntu 14.04搭建Open×××服務器》。
這裏有個難點就是客戶端與內網服務器通訊的問題。
open***客戶端與內網服務器通訊問題,若是是單網卡的話,咱們只須要按照《爛泥:open*** tun模式下客戶端與內網機器通訊》這篇文章進行操做便可。
那麼服務器雙網卡如何配置呢?
其實雙網卡的配置,其實和單網卡的配置差很少,都是要修改open***服務的配置文件和配置iptables規則。只是iptables規則改變下了而已,下面咱們實際配置下。
4、open***具體配置
open***服務配置文件內容以下:
grep -vE '^;|^$|^#' /etc/open***/server.conf
port 1194
proto tcp
dev tun
ca ca.crt
cert ilanni.crt
key ilanni.key # This file should be kept secret
dh dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 10.10.1.0 255.255.255.0"
push "dhcp-option DNS 223.5.5.5"
client-to-client
duplicate-cn
keepalive 10 120
comp-lzo
persist-key
persist-tun
status open***-status.log
log open***.log
verb 3
上述open***服務配置文件中,push "route 10.10.1.0 255.255.255.0"這條命令必定要有,它是推送給客戶端的路由配置。
5、IPtables配置
open***配置完畢後,咱們如今開始配置open***服務器的IPtables規則。
如今服務器的網卡配置以下:
ifconfig
經過上圖,咱們能夠看到網卡em2是和內網進行通訊的,咱們如今須要作的就是把全部從open***客戶端(10.8.0.0/24)請求到10.10.1.0/24網段的數據所有假裝成網卡em2(10.10.1.17)發出的。也就是說須要在iptables上作一個NAT規則。
命令以下:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o em2 -j SNAT --to-source 10.10.1.17
iptables -nL -t nat
上述命令的意思是把全部來自10.8.0.0/24網段的請求假裝成10.10.1.17這個IP地址,而後經過em2這個網卡發出。
也能夠直接修改iptables的配置文件,以下:
-A POSTROUTING -s 10.8.0.0/24 -o em2 -j SNAT --to-source 10.10.1.17
而後從新加載iptables規則。
若是是centos系統的話,直接使用/etc/init.d/iptables restart命令重啓iptables。
若是是ubuntu系統的話,使用sudo iptables-restore /home/Ubuntu/iptables.rule。
6、測試通訊狀況
open***服務與iptables規則都配置完畢後,如今咱們切換到客戶端進行測試。
客戶端鏈接open***服務器,以下:
open*** --config lianzhou.o*** &
經過上圖,咱們能夠很明顯的看出客戶端已經正確鏈接open***服務器,而且得到10.8.0.6這個IP地址。
如今咱們再來測試它與10.10.1.0/24網段的連通狀況,以下:
ping 10.10.1.12
經過上圖,咱們能夠很明顯的看到客戶端已經能夠與10.10.1.12正常通訊。
如今咱們再來嘗試鏈接下10.10.1.12這臺機器,以下:
telnet 10.10.1.12 22
經過上圖,咱們能夠很明顯的看出客戶端已經能夠鏈接10.10.1.12這臺服務器。
若是客戶端在鏈接內網服務器中出現以下的錯誤提示:
telnet: Unable to connect to remote host: No route to host
這個通常是open***服務器的iptables規則不正確致使的,建議是先使用iptables –F命令清除iptables規則保留nat規則進行調試。