歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

Centos vpn服務器間ip隧道跳轉多ip路由走向分流的真實案例

本文系統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

Copyright © Linux教程網 All Rights Reserved