爛泥:open***雙網卡客戶端與內網機器通信

前段時間寫了一篇有關open***搭建與內網機器通信的文章,那篇文章是基於服務器單網卡進行配置的,文章鏈接爲《爛泥:open*** tun模式下客戶端與內網機器通信》。

這篇文章我們再來介紹下雙網卡open***客戶端與內網機器通信的配置。

一、需求說明

爲什麼要寫open***雙卡的配置?

是因爲一般IDC機房都是提供多網卡服務器,同時目前比較流行的雲服務器阿里雲提供的也是雙網卡,而騰訊雲以及亞馬遜的aws都是單網卡。各個雲服務器商的網卡配置個數,如下圖:

clip_image001[4]

clip_image002[4]

clip_image003[4]

二、業務要求

現在IDC機房那邊有一臺服務器配A配置的是雙網卡,一塊配置的是公網IP(173.33.141.50),一塊配置的是內網IP(10.10.1.17)。另外在這個IDC機房內的其他服務器,爲了安全起見,配置都是的內網IP10.10.1.0/24網段的。

現在要求很簡單,通過服務器A管理內網的其他服務器。

三、解決方案

爲了達到上述要求,我們可以在服務器A上搭建open***服務,然後客戶端通過這臺open***服務器作爲跳板機管理內網服務器。

open***的搭建很簡單,可以參考這篇文章《爛泥:ubuntu 14.04搭建Open***服務器》。

這裏有個難點就是客戶端與內網服務器通信的問題。

open***客戶端與內網服務器通信問題,如果是單網卡的話,我們只需要按照《爛泥:open*** tun模式下客戶端與內網機器通信》這篇文章進行操作即可。

那麼服務器雙網卡如何配置呢?

其實雙網卡的配置,其實和單網卡的配置差不多,都是要修改open***服務的配置文件和配置iptables規則。只是iptables規則改變下了而已,下面我們實際配置下。

四、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

clip_image004[4]

上述open***服務配置文件中,push "route 10.10.1.0 255.255.255.0"這條命令一定要有,它是推送給客戶端的路由配置。

五、IPtables配置

open***配置完畢後,我們現在開始配置open***服務器的IPtables規則。

現在服務器的網卡配置如下:

ifconfig

clip_image005[4]

通過上圖,我們可以看到網卡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這個網卡發出。

clip_image006[4]

也可以直接修改iptables的配置文件,如下:

-A POSTROUTING -s 10.8.0.0/24 -o em2 -j SNAT --to-source 10.10.1.17

clip_image007[4]

然後重新加載iptables規則。

如果是centos系統的話,直接使用/etc/init.d/iptables restart命令重啓iptables。

如果是ubuntu系統的話,使用sudo iptables-restore /home/Ubuntu/iptables.rule

六、測試通信情況

open***服務與iptables規則都配置完畢後,現在我們切換到客戶端進行測試。

客戶端連接open***服務器,如下:

open*** --config lianzhou.o*** &

clip_image008[4]

clip_image009[4]

通過上圖,我們可以很明顯的看出客戶端已經正確連接open***服務器,並且獲得10.8.0.6這個IP地址。

現在我們再來測試它與10.10.1.0/24網段的連通情況,如下:

ping 10.10.1.12

clip_image010[4]

通過上圖,我們可以很明顯的看到客戶端已經可以與10.10.1.12正常通信。

現在我們再來嘗試連接下10.10.1.12這臺機器,如下:

telnet 10.10.1.12 22

clip_image011[4]

通過上圖,我們可以很明顯的看出客戶端已經可以連接10.10.1.12這臺服務器。

如果客戶端在連接內網服務器中出現如下的錯誤提示:

telnet: Unable to connect to remote host: No route to host

clip_image012[4]

這個一般是open***服務器的iptables規則不正確導致的,建議是先使用iptables –F命令清除iptables規則保留nat規則進行調試。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章