將兩個局域網用openvpn連接起來

考慮到我們做集群的時候需要用到可能有20臺機器,可能我的要求跟別人的不一樣的,我需要做20臺左右的集群,不僅僅是會,而且需要非常熟練的搭建,最后通過腳步一鍵自動化部署安裝。 目前我有兩臺電腦,一臺可以運行7臺,另一臺可以運行12臺左右,剛好可以滿足的我的要求,但是我兩臺電腦都是設置的nat模式的網絡,為什么我非要配置nat模式呢,根據集群架構思想,為了保證架構安全,集群全部在內網做。還有一個優點就是做nat模式可以自由遷移電腦,搭建的集群還能運行,如果是橋接模式就不行了,現在的狀況就是有兩臺的電腦虛擬機nat模式,如何連接起來一起工作,研究了很久,居然可以用openvpn可以解決。下面來具體介紹如何搭建openvpn

1. 制作yum源和epe源,這個就不詳細說了,我用的是阿里云的源,去阿里云的幫助文檔也可以找到制作方法,很簡單的,別忘記了

yum clean  all

yum repolist

2、安裝openvpn和證書制作工具easy-rsa

yum install -y openssl openssl-devel lzo lzo-devel pam pam-devel automake pkgconfig openvpn easy-rsa

3、配置openvpn 拷貝配置文件

cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf  /etc/openvpn/

4.編輯openvpn主配置文件

vim /etc/openvpn/server.conf

主要修改以下幾個配置,把前邊的分號注釋去掉,其中DNS配置項,改成阿里公共DNS地址

proto udp //使用udp協議,還有一個tcp協議,允許http代理
dev tap  //使用tap設備
server 192.168.44.0  255.255.255.0 //配置網關
push "route 192.168.43.0 255.255.255.0" //配置路由
#vpn的內網地址段,與NAT轉發規則相對應,openvpn在使用tun路由模式時,分配給client端分配的IP地址段  
push "redirect-gateway def1 bypass-dhcp" //開啟自動分配地址
//設置dns解析
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4" 
//設置運行時使用的用戶和用戶組
user nobody
group nobody
log         openvpn.log //開啟日志
explicit-exit-notify 0 //默認是1 默認的意思使用udp協議,這里我們改成0

5、配置證書文件

mkdir -p  /etc/openvpn/easy-rsa/keys   
cp  -a  /usr/share/easy-rsa/2.0/*  /etc/openvpn/easy-rsa/    
vi   /etc/openvpn/easy-rsa/vars

修改以下配置的內容,自定義設置各項值就可以。

export KEY_COUNTRY="CN"
export KEY_PROVINCE="BJ"
export KEY_CITY="Bei Jing"
export KEY_ORG="mabang" #定義所在的組織
export KEY_EMAIL="626612631@qq.com"
export KEY_OU="magedu"  #定義所在的單位
export KEY_NAME="vpnserver"#定義openvpn服務器的名稱
export KEY_CN="magedu" 這行配置,前邊默認的“#”號注釋去掉。

制作證書 openvpn

cp  /etc/openvpn/easy-rsa/openssl-1.0.0.cnf  /etc/openvpn/easy-rsa/openssl.cnf
cd /etc/openvpn/easy-rsa    #切換工作目錄
source ./vars    #讓配置文件生效
./clean-all 
./build-ca    #之前已配置好相關參數,故執行命令后,按回車鍵,一直到結束。

創建服務端證書

./build-key-server server   
#按回車鍵進行,在提示輸入密碼的地方,設置一個密碼如123456在An optional company name處輸入如:srayban
最后輸入兩次“y”回車

創建客戶端證書

./build-dh     #創建秘鑰文件,等待命令執行完。
ls   /etc/openvpn/easy-rsa/keys/       #可以看到,目錄中已經創建好了證書文件。
cd  /etc/openvpn/easy-rsa/keys
cp  dh2048.pem  ca.crt  server.crt  server.key   /etc/openvpn/
cd  /etc/openvpn/easy-rsa
./build-key client     
#創建客戶端證書文件,按回車進行,提示輸入密碼的地方,輸入之前設置的證書密碼,123456
An optional company name處輸入先前設置的公司名字(srayban)。
【一定要和先前輸入的一樣哦.,其他參數如果前面設置了,也要保持一致噢】 
#另外注意:有多少個客戶端就需要
./build-key client 多少次,當然client名字需不同。

ls /etc/openvpn/easy-rsa/keys/    #可以看到,生成了客戶端的證書文件

6、設置iptables,firewalld、路由轉發

  • [ ] iptables 設置
yum install -y iptables-services
systemctl enable iptables
systemctl stop firewalld   #關閉Centos7默認的 firewall防火墻
systemctl start iptables   #啟動iptables
iptables  -F     #清空默認的iptables規則 設置iptables NAT轉發規則
iptables -t nat -A POSTROUTING -s 192.168.43.0/24  -j MASQUERADE 
iptables -A INPUT -p TCP --dport 1194 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
service i.ptables save   #保存防火墻規則
echo 1 > /proc/sys/net/ipv4/ip_forward     #臨時開啟路由轉發
vi  /etc/sysctl.conf  
#編輯配置文件,添加以下配置,設置永久路由轉發
net.ipv4.ip_forward = 1
  • [√] firewalld 設置

在CentOS 7中,iptables防火墻已經被firewalld所取代,需要使用如下方法:首先啟動firewalld,先查看防火墻狀態

systemctl status firewalld.service
如果防火墻沒有啟動,啟動防火墻

service firewalld start

查看有哪些服務已經在列表中允許通過:
# firewall-cmd --list-services
dhcpv6-client http https ssh



可以看到已經有了dhcpv6-client, http, https, ssh四項,接下來添加openvpn:
# firewall-cmd --add-service openvpn 
success
# firewall-cmd --permanent --add-service openvpn 
success


檢查一下:
# firewall-cmd --list-services
dhcpv6-client http https openvpn ssh

最后添加masquerade:

# firewall-cmd --add-masquerade 
success
# firewall-cmd --permanent --add-masquerade 
success

以下命令用于確認masquerade是否添加成功:
# firewall-cmd --query-masquerade
yes
  • [ ] 允許IP轉發

在sysctl中開啟IP轉發

vim /etc/sysctl.conf

# Controls IP packet forwarding
net.ipv4.ip_forward = 1
  1. 啟動OpenVPN服務

啟動OpenVPN服務器并添加自動啟動項:

sysctl -p

systemctl -f enable openvpn@server.service      #設置啟動文件

systemctl start openvpn@server.service  #啟動openvpn的命令
systemctl enable openvpn@server.service  #開機自啟動

至此服務端搭建完成。

8、openvpn客戶端(電腦、手機)連接vpn 把服務器上的三個客戶端證書文件,下載到本地電腦配置vpn客戶端。

/etc/openvpn/easy-rsa/keys/ca.crt 
/etc/openvpn/easy-rsa/keys/client.crt 
/etc/openvpn/easy-rsa/keys/client.key

安裝好openvpn客戶端軟件后,把證書文件,存放到openvpn安裝目錄的config文件夾下。
從sample-config文件夾下,拷貝客戶端的配置文件client.ovpn 到config文件夾下。
編輯config文件夾下的配置文件client.ovpn,
修改remote my-server-1 1194 這行配置,
指定openvpn服務器的ip地址,默認為你服務器的外網IP。
可以添加 push route 61.139.2.69 #電信DNS地址
配置好后,點擊openvpn的客戶端圖標,連接vpn。
openvpn的圖標顯示綠色后,表示已經連接上vpn了。

然后在本地電腦進行測試,連接vpn后,可以訪問ECS服務器的內網,
通過ECS服務器連接公網。 本地電腦用瀏覽器上網,顯示的ECS服務器的公網ip。
在客戶端ping一下服務器IP,查看響應情況。 最后,百度輸入IP,查看本機IP,
發現你的IP已經變成服務器IP就表明VPN搭建成功了。

如果你要讓別人連VPN呢?難道也把那么多配置文件發給別人,太麻煩了,
所以可采取如下策略,將ca.crt、client.crt、client.key全部拷貝到Client.ovpn里,
這樣只需這一個文件即可連接

原創文章,作者:srayban,如若轉載,請注明出處:http://www.www58058.com/74524

(10)
sraybansrayban
上一篇 2017-05-01
下一篇 2017-05-01

相關推薦

  • Linux基礎知識之磁盤及文件系統管理(二)

    1.磁盤和文件系統管理: 文件系統管理工具:     創建文件系統工具(文件系統建議使用ext4)     (1)mkfs.FS_TYPE         a.mkfs.{ext2,ext3,ext4…

    Linux干貨 2016-08-29
  • bash中的變量詳解

        在bash中,巧妙地運用變量,能夠大大減輕編程的工作量,下面讓我們來詳細了解一下bash的變量. bash中的變量種類:     根據變量的生效范圍等標準:         本地變量:生效范圍…

    Linux干貨 2016-08-18
  • Python函數式編程指南:目錄和參考

    目錄: 概述 這一篇簡要地描述了函數式編程和一些相關的概念。 函數 這一篇展示了關于函數可能不常用到的部分特征并嘗試引導諸位使用函數式的思維解決問題,并介紹了諸多有用的內建函數。 迭代器 這一篇介紹了迭代器以及Python對迭代器的語法級的支持,還包括了內置模塊itertools的介紹。 生成器 這一篇介紹了自定義的迭代器——生成器,并展示了生成器的用途和使…

    Linux干貨 2015-03-11
  • 認識shell

    一、認識shell 什么是shell?shell為單詞外殼的意思。那么這是誰的外殼?我們知道一個系統中實際工作的是那些硬件,cpu、內存、磁盤等。我們如何調用這些硬件為我們工作?實際上,硬件是由內核kernel控制的。我們可以通過kernel控制硬件,但我們不能直接和內核kernel交流。我們需要一個外殼,這個外殼就是shell來溝通kernel。何為she…

    Linux干貨 2015-09-22
  • 第五周作業

    博客具體內容請移步博客園http://www.cnblogs.com/wangenzhi/p/6235456.html

    Linux干貨 2016-12-30

評論列表(2條)

  • PowerMichael
    PowerMichael 2017-05-02 08:15

    厲害,干貨,學習了。

  • kemenkai
    kemenkai 2017-05-19 16:16

    Server端和Client端都是單網卡還是雙網卡的?
    這也是點對點的連接嗎?

欧美性久久久久