如何使用openwrt搭建ipsec隧道
背景:最近同事遇到了個ipsec問題,做的ipsec特性,ftp下載ipv6性能只有100kb, 正面定位該問題也蠻久了,項目沒有用openwrt, 不過用了開源組件strongswan, 加密算法這些也是內(nèi)核自帶的,想著開源的不太可能有問題,想著我?guī)退{(diào)試一下開源的,他繼續(xù)正面定位。順便學(xué)習(xí)一下怎么玩一下ipsec。ipsec和strongswanWan網(wǎng)上資料很多,這里我們不再做過多的介紹,我們主要先介紹一下針對同事的該問題,環(huán)境怎么搭建。
環(huán)境搭建:我們知道ipsec 主要是實現(xiàn)不同局域網(wǎng)網(wǎng)段之間的加密傳輸,實際對于現(xiàn)網(wǎng)用戶的話需要服務(wù)器和客戶端之間有公網(wǎng)ip,我們這里沒有用公網(wǎng)ip也沒有什么影響,環(huán)境top圖如下:
ipsec編譯:一開始想著能不能直接用opkg在線安裝,發(fā)現(xiàn)安裝之后會遇到各種各樣的問題,解決一個又接著下一個,這條路暫時行不通。我們直接去編譯一下帶ipsec的openwrt的固件,遇到問題也好解決一點,這里我選擇的lean大佬的openwrt源碼,在國內(nèi)我們玩openwrt的玩家基本都在用lean的代碼,因為lean的代碼適配了國內(nèi)基本上常見的路由器固件,我們只需要make menuconfig開一下對應(yīng)產(chǎn)品的宏就可以編譯,非常簡單上手。
我這里編譯的路由器型號是gl.mt3000,lean幫忙我們適配了其它ipsec依賴的strongswan對應(yīng)的宏,不需要我們?nèi)ラ_,截圖如下
我們可以看到lean的源碼web界面適配了ipsec ikev1版本,不支持ikev2
我們可以需要自己去改一下ipsec的配置文件ipsec.conf就可以讓客戶端和服務(wù)端連接,配置文件內(nèi)容如下:
config setup conn %default ikelifetime=28800 keylife=20m rekeymargin=3m keyingtries=1 keyexchange=ikev2 conn site_to_site left=192.168.250.40 #這里填當(dāng)前路由器wan ip leftsubnet=192.168.1.0/24 #這里填當(dāng)前路由器網(wǎng)段 leftid=192.168.250.40 #這里填當(dāng)前路由器wan ip leftauth=secret rightauth=secret right=192.168.250.94 #這里填對方路由器wan ip rightsubnet=192.168.10.0/24 #這里填對方路由器網(wǎng)段 rightid=192.168.250.94 #這里填對方路由器wan ip ike=aes128-sha1-modp2048! esp=aes128-sha1! auto=start
ipsec.secrets配置psk,服務(wù)器和客戶端psk要保存一致
root@OpenWrt:/etc# cat ipsec.secrets # /etc/ipsec.secrets - strongSwan IPsec secrets file : PSK "1" mw : XAUTH "1"
另外一臺路由器我們也需要這樣配置,就是上面ipsec.conf里面填寫ip地址的地方需要和上面反過來就可以了。
我們都編輯好之后,如果之前ipsec進(jìn)程已經(jīng)運行了,我們可以用執(zhí)行命令ipsec restarts,如果之前沒有運行,我們需要執(zhí)行ipsec start, 然后我們可以執(zhí)行ipsec statusall查看當(dāng)前的轉(zhuǎn)態(tài),我們可以看到有個connecting,說明正在連接中,如果up前面不是0,那么說明我們ipsec 已經(jīng)連接上了。
我們配置好ipsec.conf后,發(fā)現(xiàn)死活連接不上,up前面一直是0,然后做了一個嘗試,把配置文件里面的ipsec.conf里面的ikv2改成了ikv1發(fā)現(xiàn)連接上了,之前一直懷疑加密算法有問題,看來加密算法是沒有問題,此刻阻塞了。剛好手機(jī)拍下了日志,把日志往群里發(fā)了一下,細(xì)心的群友看出了問題點。
openssl制作證書的時候需要,這里不知道為啥ikv1可以ikv2不行,可以找一下提示的這個函數(shù)openssl_plugin_create在哪里定義,安裝試一下
然后我搜了一下這個函數(shù)是在哪個地方定義的,只需要我們?nèi)ラ_一下對應(yīng)的宏就行
然后重新編譯了一下版本,發(fā)現(xiàn)連接上去了。
我們簡單測試一下:發(fā)現(xiàn)只能ping通網(wǎng)關(guān),2臺路由器下面的lan側(cè)設(shè)備不能互相ping通,之前懷疑策略路由有問題,命令如下
可是不管怎么去改策略路由還是不行,還在頁面上去配置了靜態(tài)路由器,之前在bibi看到過有說需要配置一下靜態(tài)路由,只能病急亂投醫(yī),做了很多嘗試還是不行。又繼續(xù)查詢資料,說的是關(guān)閉防火墻,因為之前我已經(jīng)做過了一個嘗試,就是只關(guān)閉一臺路由器的防火墻,沒有關(guān)閉另外一臺路由器的,這次我嘗試2臺路由器都關(guān)閉了,竟然都ping通了。
關(guān)閉防火墻命令如下:
etc/init.d/firewall stop
ipsec報文是加密的,我們抓包看一下,是否是這樣的,用tcpdump抓了一下,然后報文沒有加密,很疑惑,轉(zhuǎn)念一想,不應(yīng)該呀。可能是抓包點位的問題,我們tcpdump是在協(xié)議棧入口抓的,可能還沒有經(jīng)過ipsec加密的地方,然后我又抓了一下wan口的報文,這次對得上了。
我們用iperf3打流測試一下ipv4看一下性能怎么樣,性能不是很高,只有20bps,不過規(guī)格說的是10bps, 也滿足了要求。接下來我們看一下ipv6性能怎么樣,直接ftp下載一下文件,速率和ipv4差不多,也是20bps左右。ipv6的配置文件如下:主要和ipv4的區(qū)別就是填寫ipv4地址的地方都寫ipv6的就行。
到此這篇關(guān)于如何使用openwrt搭建ipsec隧道的文章就介紹到這了,更多相關(guān)openwrt搭建ipsec隧道內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Svn安裝和使用_動力節(jié)點Java學(xué)院整理
這篇文章主要介紹了Svn安裝和使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-08-08windows 權(quán)限之拒絕運行應(yīng)用程序
windows 權(quán)限之拒絕運行應(yīng)用程序的解決方法。2009-06-06基于epoll實現(xiàn) Reactor服務(wù)器的詳細(xì)過程
在我們調(diào)用epoll_create的時候會創(chuàng)建出epoll模型,這個模型也是利用文件描述類似文件系統(tǒng)的方式控制該結(jié)構(gòu),這篇文章主要介紹了基于epoll實現(xiàn) Reactor服務(wù)器的詳細(xì)過程,需要的朋友可以參考下2023-12-12詳解百度https認(rèn)證提示"請將您的http站點301重定向到https站點"的解決辦法
對于301重定向這一概念玩SEO的同志們都不陌生了,近些年來https協(xié)議越來越火,百度大大已經(jīng)明確了對https的扶持政策,這篇文章主要介紹了詳解百度https認(rèn)證提示"請將您的http站點301重定向到https站點"的解決辦法,感興趣的小伙伴們可以參考一下2018-12-12windows系統(tǒng)搭建zookeeper服務(wù)器的教程
這篇文章主要介紹了windows系統(tǒng)搭建zookeeper服務(wù)器的教程,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-10-10svn服務(wù)器安裝在centos7系統(tǒng)平臺
本文給大家介紹的是在centos7系統(tǒng)上安裝svn服務(wù)器的詳細(xì)教程,有需要的小伙伴可以參考下2018-04-04