簡介
<code> OpenSwan是Linux下Ipsec及l2tp協議的一個不錯的實現方案,它支持和Ipsec相關的大多數的擴展(RFC+IETF drafts),例如:IKEv2,X.509 Digital Certificates,NAT Traversal等等。OpenSwan項目始源於FreeS/WAN2.4項目,該軟件的功能很強大,最大程度上保證數據在跨網傳輸中的安全性、完整性、特別是通過它,我們可以很好地實現跨異地機房或異地辦公場所實現局域網互聯解決方案,如果和openvpn工具配合,可以實現諸如門戶網站的多機房互訪及VPN的各種強大的解決方案。/<code>
L2TP
<code> (Layer 2 Tunnel Protocol )第二層隧道協議,是為在用戶和企業的服務器之間透明傳輸PPP報文而設置的隧道協議。/<code>
Ipsec:
<code> Internel 協議安全性(IPsec),它是一種開放標準的框架結構,通過使用加密的安全服務以確保在Internel協議(IP)網絡上進行保密而安全的通訊。/<code>
OpenSwan配置文件簡介
OpenSwan主要配置文件
<code>/etc/ipsec.secrets用來保存private RSA keys 和 preshared secrets (PSKs)/etc/ipsec.confOpenSWan主要配置文件(settings, options, defaults, connections)/<code>
Openswan主要配置說明
<code>/etc/ipsec.d/cacerts存放X.509認證證書/etc/ipsec.d/certs存放X.509客戶端證書/etc/ipsec.d/crls存放X.509證書撤銷文件/etc/ipsec.d/private存放X.509認證私鑰/etc/ipsec.d/ocspcerts存放X.509 OCSP證書/etc/ipsec.d/policies存放Opportunistic Encryption 策略組/<code>
OpenSWan連接方式
<code>1)Network-to-Network 條件: 每個子網各自擁有一臺安裝有Openswan的主機作為其子網的出口網關 每個子網的IP段不能有疊加2)Road Warrior方式 當使用Network-to-Network方式時,作為每個子網網關的之際不能像子網內部主機那樣透明訪問遠程子網的之際,也就是說:如果你是一個使用筆記本電腦的移動用戶,經常出差或是在不同的地點辦公,你的PC將不能用Network-to-Network方式與公司網絡進行連接。 Road Warrior方式正是為這種情況而設計的,連接建立後,你的pc就可以鏈接到遠程的網絡了/<code>
配置環境與主機規劃
Hostname網卡eth0網卡eth1默認網關用途node1192.168.1.7110.1.1.7110.1.1.1A機房服務端node2172.16.1.7210.1.1.7210.1.1.1B機房服務端node3192.168.1.73192.16.1.71A機房客戶端node4172.16.1.74172.16.1.72B機房客戶端
注意
<code>1)要保證node1的eth1和node2的eth1互相ping通;2)要保證node3能夠ping通node1的eth0和eth1網口;3)要保證node4能夠ping通node2的eth0和eth1網口;/<code>
OpenSwan安裝
<code>1、配置內核參數(四臺機器全部配置)[root@node1 ~]# cat << EOF >> /etc/sysctl.confnet.ipv4.conf.eno16777736.send_redirects = 0net.ipv4.conf.eno33554960.send_redirects = 0net.ipv4.conf.eno16777736.accept_redirects = 0net.ipv4.conf.eno33554960.accept_redirects = 0net.ipv4.conf.lo.accept_redirects = 0net.ipv4.conf.lo.accept_redirects = 0net.ipv4.conf.default.accept_redirects = 0net.ipv4.conf.default.accept_redirects = 0net.ipv4.conf.all.accept_redirects = 0net.ipv4.conf.all.accept_redirects = 0net.core.xfrm_larval_drop = 1EOF[root@node1 ~]# sysctl -p2、下載openswan[root@node1 ~]# wget https://download.openswan.org/openswan/openswan-2.6.43.1.tar.gz[root@node2 ~]# wget https://download.openswan.org/openswan/openswan-2.6.43.1.tar.gz3、node1安裝openswan,並啟動服務[root@node1 ~]# tar xf openswan-2.6.43.1.tar.gz[root@node1 ~]# cd openswan-2.6.43.1[root@node1 openswan-2.6.43.1]# make programs[root@node1 openswan-2.6.43.1]# make install[root@node2 ~]# /etc/init.d/ipsec start4、node2安裝openswan,並啟動服務[root@node2 ~]# tar xf openswan-2.6.43.1.tar.gz[root@node2 ~]# cd openswan-2.6.43.1[root@node2 openswan-2.6.43.1]# make programs[root@node1 openswan-2.6.43.1]# make install[root@node2 ~]# /etc/init.d/ipsec start此處如果報錯:perl: warning: Setting locale failed解決方法echo "export LC_ALL=C" >> /etc/profilesource /etc/profile5、檢查啟動端口檢查配置[root@node1 ~]# ipsec verify檢查端口[root@node1 ~]# netstat -lntulp|grep plutoudp 0 0 127.0.0.1:4500 0.0.0.0:* 8176/plutoudp 0 0 192.168.1.71:4500 0.0.0.0:* 8176/plutoudp 0 0 192.168.52.128:4500 0.0.0.0:* 8176/plutoudp 0 0 10.1.1.71:4500 0.0.0.0:* 8176/plutoudp 0 0 127.0.0.1:500 0.0.0.0:* 8176/plutoudp 0 0 192.168.1.71:500 0.0.0.0:* 8176/plutoudp 0 0 192.168.52.128:500 0.0.0.0:* 8176/plutoudp 0 0 10.1.1.71:500 0.0.0.0:* 8176/plutoudp6 0 0 ::1:500 :::* 8176/pluto6、生成hostkey[root@node1 ~]# ipsec newhostkey --output /etc/ipsec.secrets[root@node2 ~]# ipsec newhostkey --output /etc/ipsec.secrets7、生成主機密鑰[root@node1 ~]# ipsec showhostkey --left > /etc/ipsec.key[root@node2 ~]# ipsec showhostkey --right > /etc/ipsec.key8、配置配置文件conn net-to-net left=192.168.1.103 # LServer外網IP地址 leftsubnet=192.168.2.0/24 # LServer內網IP段 [email protected] # LServer的標識 leftrsasigkey=0sAQOBIJFmj... # LServer的公鑰 leftnexthop=%defaultroute # LServer的下一跳指定為默認路由地址 right=192.168.1.104 # RServer外網IP地址 rightsubnet=192.168.3.0/24 # RServer內網IP段 [email protected] # RServer的標識 rightrsasigkey=0sAQNZZZjj... # Rserver的公鑰 rightnexthop=%defaultroute # RServer的下一跳指定為默認路由地址 auto=add # 添加這個鏈接,但是在OpenSWan啟動時不自動連接9、配置node1、node2配置文件(兩端一致)[root@node1 ~]# cat /etc/ipsec.confversion 2.0config setup nat_traversal=yes virtual_private=%v4:192.168.0.0/16,%v4:172.16.0.0/12,10.6.27.0/24 oe=off protostack=netkeyconn beijing_tianjin_oldboy_lan left=10.1.1.71 leftid=@left leftsubnet=192.168.1.0/24 # rsakey AQPltR6EI leftrsasigkey=0sAQPltR6EI7yC9UfM0AzWeu0kP3JHWPODW1Jp9JrTcr7qHO5tiBMdGly3D/EuKbq7fdeSpRpp+kjK3y7HGmbVpG0ngwUJCvp8GVJc6TGadLtdMbhdzjXz0/7LPeHjPxaEkJgccVo9SAU5QVWEoKLGNsc+XlKiC4/wg6JGPKbwiT66J4ZI2LeASyr47yLZwd/bYEhjzohXugQnqk718SdoLi857DO1IqWmVuCokdduGDEOyebrR8wpKETrmZxwnVi+PA68TPAeRfaNCUhaBPXD9ne3Ze6YvNN8+1xDs5YABkHkfxjvwSBAkRPTeUkJqbWLVAuPTaGG2NWc20vig/1xAmUgWUG89XTOujYVv/4sSvAPYG9d leftnexthop=%defaultroute right=10.1.1.72 rightid=@right rightsubnet=172.16.1.0/16 # rsakey AQNKihf8L rightrsasigkey=0sAQNKihf8L94B/B5cxV0FN50NQJNLDmeS1D3TuYW2Tsczt25OFwz88ry0jXnmesmZQT/o6rH8gilhouFf0qV+XqTVg6y2WrXEgWu0mny9R/GefO4XtqRZ6x+A3218ILU4m3LlOTcEM20j9+7q8BqPNYNuVtsOtvf/y4l3z/UajAYNIVsU6nhZYvCNnauiKOlRGtUAY48lD/rcU6Mhvc6XoqSUtQIHYEp+hLl/Rxvhd8LYvzdgdI9TlcOB29/ZQoT3eLMs2PzX1u7R3BeDj9a4CRuOH4g+S0AHsd0HgzCRHMrMnqv7jigRH1oSIGXDH3JT7dtteRKMMuKJt822eKFihy9aHI/ji2keLLzaoSMVCHhgV/k/ rightnexthop=%defaultroute auto=start[root@node1 ~]# /etc/init.d/ipsec restart10、配置防火牆nat規則[root@node1 ~]# iptables -t nat -I POSTROUTING -o eno16777736 -s 192.168.1.71/24 -j MASQUERADE [root@node2 ~]# iptables -t nat -I POSTROUTING -o eno16777736 -s 172.16.1.0/16 -j MASQUERADE11、測試互通[root@node3 ~]# ping -c 1 172.16.1.74PING 172.16.1.74 (172.16.1.74) 56(84) bytes of data.64 bytes from 172.16.1.74: icmp_seq=1 ttl=62 time=0.814 ms[root@node4 ~]# ping -c 1 192.168.1.73PING 192.168.1.73 (192.168.1.73) 56(84) bytes of data.64 bytes from 192.168.1.73: icmp_seq=1 ttl=62 time=6.05 ms/<code>
閱讀更多 動漫資深愛好者和IT 的文章