tunnel 技術能夠使不一樣地方的機房經過公網實現兩邊的機房內部的局域網互聯互通。html
如下是配置環境:linux
------------------------------------------INTERNET-----------------------------------------bash
| 192.168.100.253/24| 10.6.88.229 <------> 10.6.88.223 |192.168.200.253/24| tcp
client1 |- - - | - - | | - - | - - - |client 2ide
| eth0(內網) | eth1(外網) | | eth1(外網 | eth0(內網) | 測試
-------------------------------------------------------------------------------------------ui
在10.6.88.229中配置:加密
建立tunnel.sh腳本(多網段環境在下面腳本目標內網路由中加入相應的ip段便可)spa
#!/bin/bash.net
#加載路由模塊
modprobe ipip
modprobe ip_gre
#添加隧道 ip tunnel add 隧道名 mode 協議 remote 遠端可通ip local 本地出口ip ttl 255(64)
ip tunnel add tun30 mode gre remote 10.6.88.223 local 10.6.88.229 ttl 255
#啓動隧道
ip link set tun30 up
#爲隧道增長虛擬ip
ip addr add 172.16.10.1 dev tun30
#增長路由,目標本機虛擬ip經過本機tun30隧道鏈接
ip route add 172.16.10.1 dev tun30
#增長路由,目標遠端內網ip經過本機tun30隧道鏈接
ip route add 192.168.200.0/24 dev tun30 via 172.16.10.1
#增長路由,目標遠端隧道ip經過本機tun30隧道鏈接
ip route add 192.168.10.0/24 dev tun30 via 172.16.10.1
#增長一個 arp 的響應機制及打開ip轉發功能
#arp -Ds 192.168.100.253 eth1 pub
sysctl -w net.ipv4.ip_forward=1
#隧道段ip的nat經過本地內網ip向外發送
/sbin/iptables -t nat -o eth0 -A POSTROUTING -s 172.16.10.0/24 -j MASQUERADE
在10.6.88.223中配置:
建立tunnel.sh腳本(多網段環境在下面腳本目標內網路由中加入相應的ip段便可)
#!/bin/bash
#加載路由模塊
modprobe ipip
modprobe ip_gre
#添加隧道 ip tunnel add 隧道名 mode 協議 remote 遠端可通ip local 本地出口ip ttl 255(64)
ip tunnel add tun40 mode gre remote 10.6.88.229 local 10.6.88.223 ttl 255
#啓動隧道
ip link set tun40 up
#爲隧道增長虛擬ip
ip addr add 192.168.10.1 dev tun40
#增長路由,目標本機虛擬ip經過本機tun40隧道鏈接
ip route add 192.168.10.1 dev tun40
#增長路由,目標遠端內網ip經過本機tun40隧道鏈接
ip route add 192.168.100.0/24 dev tun40 via 192.168.10.1
#增長路由,目標遠端隧道ip經過本機tun40隧道鏈接
ip route add 172.16.10.0/24 dev tun40 via 192.168.10.1
#增長一個 arp 的響應機制及打開ip轉發功能
#arp -Ds 192.168.200.253 eth1 pub
sysctl -w net.ipv4.ip_forward=1
#隧道段ip的nat經過本地內網ip向外發送
/sbin/iptables -t nat -o eth0 -A POSTROUTING -s 192.168.10.0/24 -j MASQUERADE
添加路由:
client1與client2上分別加如下路由(多網段的環境直接加入相應IP段的路由便可)
route add -net 192.168.200.0 netmask 255.255.255.0 gw 192.168.100.253
route add -net 192.168.100.0 netmask 255.255.255.0 gw 192.168.200.253
分別在10.6.88.229和10.6.88.223執行tunnel.sh腳本後就已經創建起tunnel了
最後檢測下連通性,直接在client1上ping client2
-------------------------------------------------------------------------------------------
配置數據加密:
安裝ipsec-tools
wget ftp://ftp.pbone.net/mirror/ftp.pramberger.at/systems/linux/contrib/rhel5/x86_64/ipsec-tools-0.8.0-1.el5.pp.x86_64.rpm
wget ftp://ftp.pbone.net/mirror/ftp.pramberger.at/systems/linux/contrib/rhel5/x86_64/ipsec-tools-libs-0.8.0-1.el5.pp.x86_64.rpm
yum localinstall --nogpgcheck ipsec-tools-libs-0.8.0-1.el5.pp.x86_64.rpm ipsec-tools-0.8.0-1.el5.pp.x86_64.rpm
下面在 10.6.88.229 上創建ipsec
cat /etc/setkey.conf
flush;
spdflush;
add 10.6.88.229 10.6.88.223 esp 11571 -E 3des-cbc "__esp_test_3des_password";
add 10.6.88.223 10.6.88.229 esp 11572 -E 3des-cbc "__esp_test_3des_password";
add 10.6.88.229 10.6.88.223 ah 15071 -A hmac-md5 "ah_test_password";
add 10.6.88.223 10.6.88.229 ah 15072 -A hmac-md5 "ah_test_password";
spdadd 10.6.88.229 10.6.88.223 any -P out ipsec
esp/transport//require
ah/transport//require;
spdadd 10.6.88.223 10.6.88.229 any -P in ipsec
esp/transport//require;
ah/transport//require;
setkey -f /etc/setkey.conf(激活配置文件,重啓後失效)
echo "setkey -f /etc/setkey.conf" >> /etc/rc.local(加入開機自啓動)
在10.6.88.223上建立setkey.conf
cat /etc/setkey.conf
flush;
spdflush;
add 10.6.88.223 10.6.88.229 esp 11571 -E 3des-cbc "__esp_test_3des_password";
add 10.6.88.229 10.6.88.223 esp 11572 -E 3des-cbc "__esp_test_3des_password";
add 10.6.88.223 10.6.88.229 ah 15071 -A hmac-md5 "ah_test_password";
add 10.6.88.229 10.6.88.223 ah 15072 -A hmac-md5 "ah_test_password";
spdadd 10.6.88.223 10.6.88.229 any -P in ipsec
esp/transport//require
ah/transport//require;
spdadd 10.6.88.223 10.6.88.229 any -P out ipsec
esp/transport//require;
ah/transport//require;
setkey -f /etc/setkey.conf(激活配置文件,重啓後失效)
echo "setkey -f /etc/setkey.conf" >> /etc/rc.local(加入開機自啓動)
測試:
在10.6.8.229上執行如下命令,經過在client1上訪問client2。查看數據包中GRE轉變成AH且包含ESP數據證實加密完成
tcpdump -n -i eth1 host 10.6.8.229
參考如下連接:
http://blog.sina.com.cn/s/blog_5f3f20890100rerj.html
http://www.chinaunix.net/old_jh/4/1055425.html
http://www.54yw.com/?id=60