本文系統Centos6.0;這裡的vpn服務以pptpd為例;其中底層涉及到pptpd+freeradius+mysql認證;
相關url:http://lansgg.blog.51cto.com/5675165/1225461
本文系真實案例;leader需求大 多是這樣的,節約成本還要達到所需要的效果;沒辦法,總的做個效果出來;
需求,國內一台vpn機器 (server1),多ip,如:10.10.10.1-5(5個ip);國外一台vpn機器(server2),多ip,如:20.20.20.1-5(5 個ip);兩台vpn服務器間要實現ip隧道跳轉;這樣可以實現縮小延遲;比如,你想使用國外的ip,你只需要撥 入國內vpn服務器即可,我們已經做了ip隧道。對外ip已經是國外的了,並且延遲要比你直接連接國外的vpn的 延遲要小。先看下圖圖吧;
如圖所示;每種顏色代表不同的 鏈路走向;其中紅色就代表了跳轉的鏈接,撥入國內Ip,其實是國外的ip;黑色代表了國內用戶直連server1, 使用國內ip,藍色的代表了用戶直連國外的機器,直接使用國外的ip,為什麼要使用隧道呢,因為有的用戶直 連國外的服務器的話,延遲較大,隧道的話,可以減小延遲;
我想大家應該明白了吧,leader的意思 就是國內機器既要對內服務,既要做跳轉到外面,國外的機器既要做跳轉的節點,又要做直連的服務器。具體 走向,現在是根據撥入Ip實現控制,撥入Ip隧道對接Ip就跳轉過去,其他的不實現跳轉,減少成本啊
下面就開始部署步驟了;
1、部署兩台機器的pptpd服務;五個ip監聽各個ip,也就是五個進程;下面是 配置文件;
cat /etc/pptpd.conf ppp /usr/sbin/pppd option /etc/ppp/pptpd-options logwtmp connections 1024 listen 10.10.10.1 localip 172.16.0.1 remoteip 172.16.0.2-254 cat /etc/pptpd2.conf ppp /usr/sbin/pppd option /etc/ppp/pptpd-options logwtmp connections 1024 listen 10.10.10.2 localip 172.16.1.1 remoteip 172.16.1.2-254 cat /etc/pptpd3.conf ppp /usr/sbin/pppd option /etc/ppp/pptpd-options logwtmp connections 1024 listen 10.10.10.3 localip 172.16.2.1 remoteip 172.16.2.2-254 cat /etc/pptpd4.conf ppp /usr/sbin/pppd option /etc/ppp/pptpd-options logwtmp connections 1024 listen 10.10.10.4 localip 172.16.3.1 remoteip 172.16.3.2-254 cat /etc/pptpd5.conf ppp /usr/sbin/pppd option /etc/ppp/pptpd-options logwtmp connections 1024 listen 10.10.10.5 localip 172.16.4.1 remoteip 172.16.4.2-254
兩台機器是配置是一樣的,唯一差別就是監聽地址不一樣 (listen);
下面是pptpd-options的配置
cat /etc/ppp/pptpd-options |grep -v ^# name pptpd refuse-pap refuse-chap refuse-mschap require-mschap-v2 require-mppe-128 proxyarp lock nobsdcomp novj novjccomp nologfd ms-dns 8.8.8.8 logfile /var/log/pptpd.log plugin /usr/lib/pppd/2.4.5/radius.so radius-config-file /etc/ppp/radius/etc/radiusclient.conf
啟動pptpd服務進程;
pptpd -c /etc/pptpd.conf pptpd -c /etc/pptpd2.conf pptpd -c /etc/pptpd3.conf pptpd -c /etc/pptpd4.conf pptpd -c /etc/pptpd5.conf
2、打通兩台機器的隧道,測試
這裡是10.10.10.1對接(跳轉)到 20.20.20.1
Server1:
ip tunnel del ethn ip tunnel add ethn mode ipip local 10.10.10.1 remote 20.20.20.1 ifconfig ethn 172.0.0.1 route add -host 172.0.0.2 dev ethn echo 1 > /proc/sys/net/ipv4/ip_forward ip rule add to 172.16.0.0/24 table ipip pref 1700 #這要告訴他凡是pptpd,第一個Ip撥入用戶分配的內網Ip0.0/24的走向ipip隧道,也就是跳轉到外面 ip route add default dev ethn table ipip
server2
ip tunnel del ethn ip tunnel add ethn mode ipip local 20.20.20.1 remote 10.10.10.1 ifconfig ethn 172.0.0.2 route add -host 172.0.0.1 dev ethn echo 1 > /proc/sys/net/ipv4/ip_forward ip rule add to 172.16.0.0/24 table ipip pref 1700 ip route add default dev ethn table ipip
現在你會發現兩塊機器互ping 172.0.0.x的可以Ok的 ;確定下ipip模塊是否加載哈;
3、實現不同ip的走向流向,對外ip顯示不同。
現在你會發現 撥入10.10.10.1這個Ip的話,會跳轉到國外,如果你想10.10.10.2這個Ip的撥入用戶也跳轉到外面的話,添加
1ip rule add to 172.16.1.0/24table ipip pref 1700
兩台機器分別;
server1:
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j SNAT --to-source 10.10.10.2 iptables -t nat -A POSTROUTING -s 172.16.2.0/24 -o eth0 -j SNAT --to-source 10.10.10.3 iptables -t nat -A POSTROUTING -s 172.16.3.0/24 -o eth0 -j SNAT --to-source 10.10.10.4 iptables -t nat -A POSTROUTING -s 172.16.4.0/24 -o eth0 -j SNAT --to-source 10.10.10.5
server2:
iptables -t nat -A POSTROUTING -s 172.16.0.0/24 -o eth0 -j SNAT --to-source 20.20.20.1 iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j SNAT --to-source 20.20.20.2 iptables -t nat -A POSTROUTING -s 172.16.2.0/24 -o eth0 -j SNAT --to-source 20.20.20.3 iptables -t nat -A POSTROUTING -s 172.16.3.0/24 -o eth0 -j SNAT --to-source 20.20.20.4 iptables -t nat -A POSTROUTING -s 172.16.4.0/24 -o eth0 -j SNAT --to-source 20.20.20.5
Ps:這裡實現根據入口不同分流,最好的是根據目標地址不同使用不同的路由表,ip rule真心很不錯;
後續有時間會繼續推出ip rule
出處 http://lansgg.blog.51cto.com/5675165/1225675