本文由秀依林楓提供友情贊助,首發于爛泥行天下
前兩篇文章我們介紹了有關openvpn的搭建與配置文件的講解,這篇文章我們再聊介紹下,在tun模式下openvpn客戶端如何與內網機器通信的問題。
一、實際問題
先來介紹下目前的基本情況,如下:
1、openvpn服務器單網卡,通過硬件防火墻把openvpn服務器的1194端口映射到公網。
2、openvpn服務器所在的網段為192.168.5.1/24網段
3、openvpn客戶端獲得ip地址為10.8.0.1/24網段
要求10.8.0.1/24網段能訪問192.168.5.1/24網段的服務器。
通過前兩篇文章,可知我們現在的openvpn客戶端已經可以正常連接openvpn服務器,但是還不能和公司內網的其他機器進行正常通信。如下:
如果openvpn服務器使用的是tap橋接模式的話,這個問題很容易解決,只需要在openvpn服務器端通過修改openvpn配置文件server.conf,向客戶端推送公司內網的IP地址段即可。
但是目前,我們公司使用的是tun模式,所以需要通過其他手段進行解決。
其實要解決這個問題,我們只需要進行如下兩步操作,就可以解決這個問題。
第一步、修改openvpn配置文件,向客戶端推送192.168.5.1/24網段的路由。(此步可以省略)
第二步、配置IPtables規則。
注意:以上兩步操作,第一步操作可以沒有,但是配置IPtables規則這一步操作一定不能少。否則客戶端還是無法與內網機器正常通信。
下面我們詳細介紹這兩步的操作。
二、openvpn服務器配置
在《爛泥:openvpn配置文件詳解》這篇文章中,我們詳細介紹了有關openvpn的server.conf配置文件,我們現在需要做的就是把192.168.5.1/24網段路由推送到客戶端。具體配置如下:
push "route 192.168.5.0 255.255.255.0"
修改完畢后,我們要重啟openvpn,如下:
sudo /etc/init.d/openvpn restart
有關openvpn需要修改的配置就這么多,下面開始配置IPtables規則。
三、配置IPtables規則
現在我們開始配置IPtables規則,我們需要做的就是把所有來自10.8.0.1/24網段的請求,全部通過openvpn服務器的eth0網卡轉發出去,也就是我們平時所說的IPtables的NAT規則。
注意:IPtables規則是在openvpn服務器進行配置的,而不是openvpn客戶端。
IPtables NAT規則如下:
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
sudo iptables -nL -t nat
以上修改完畢后,我們啟動openvpn客戶端,看看是否可以與192.168.5.1/24網段機器進行通信。
四、測試網段之間的通信
在openvpn客戶端ping192.168.5.1/24網段機器,如下:
ping 192.168.5.140
telnet 192.168.5.4 22
通過以上兩張圖,我們可以看出現在openvpn客戶端已經和內網機器正常通信。
以上就是有關openvpn tun模式下客戶端與內網機器通信的配置過程。
在實際使用openvpn過程中,我們可能還會遇到以下還有幾個問題,再此我們給出相應的openvpn配置。
五、FQ的配置
有時候為了能去國外看看,我們會購買國外的服務器,搭建openvpn然后利用這臺服務器進行FQ。
在openvpn配置中,我們只需要在openvpn服務器的server.conf配置中,開啟push "redirect-gateway def1 bypass-dhcp"項即可。如下:
push "redirect-gateway def1 bypass-dhcp"
此時openvpn客戶端撥號后,就會發現已經國外的IP。如下:
通過上圖,我們可以很明顯的看到現在IP地址已經國外的了。具體如何使用,你懂的,呵呵。
六、openvpn客戶端linux開機啟動問題
因為項目需求,需要一臺服務器開機就要連接,遠程的openvpn服務器。如果是windows系統的很簡單,配置下就可以了。
而在linux系統下只需要把openvpn客戶端連接openvpn服務器的命令寫入到/etc/rc.local文件中即可。如下:
cat /etc/rc.local
但是有一點需要特別注意,就是openvpn客戶端的配置文件中有關從CA證書、客戶端的證書以及客戶端密鑰文件,一定要寫成絕對路徑,而不是相對路徑,如下:
同時如果是centos系統的話,一定不要配置成在/root/目錄下開機啟動openvpn客戶端連接openvpn服務器。
因為經過多次測試,這樣是不能開機openvpn客戶端連接openvpn服務器的。
七、給客戶端指定IP地址
有時候為了實際項目的需求,需要給客戶端指定IP地址。那么就可以通過修改openvpn服務器的配置來達到這個要求。
只需要把server.conf文件中的開啟client-config-dir ccd,然后在/etc/openvpn目錄下創建ccd目錄。如下:
然后再在ccd目錄下根據不同的客戶端創建對應的文件,并在文件中寫入如下內容:
ifconfig-push 10.8.0.200 255.255.255.0
以上的意思就是為client這個客戶端指定IP地址為10.8.0.200。
現在我們重新啟動openvpn服務器,然后客戶端進行連接。如下:
通過上圖,我們可以很明顯的看出??蛻舳双@得的IP地址確實為10.8.0.200。
PS:以上執行是在linux系統上,經過測試發現在windows下如果給客戶端指定IP地址的話會報錯。猜想這可能是一個BUG。
新聞熱點
疑難解答