本文系统Centos6.0;这里的***服务以pptpd为例;其中底层涉及到pptpd+freeradius+mysql认证;

相关url:http://lansgg.blog.51cto.com/5675165/1225461

本文系真实案例;leader需求大多是这样的,节约成本还要达到所需要的效果;没办法,总的做个效果出来;

需求,国内一台***机器(server1),多ip,如:10.10.10.1-5(5个ip);国外一台***机器(server2),多ip,如:20.20.20.1-5(5个ip);两台***服务器间要实现ip隧道跳转;这样可以实现缩小延迟;比如,你想使用国外的ip,你只需要拨入国内***服务器即可,我们已经做了ip隧道。对外ip已经是国外的了,并且延迟要比你直接连接国外的***的延迟要小。先看下图图吧;

linux之***服务器间ip隧道跳转多ip路由走向分流(系真实案例)_第1张图片1、

如图所示;每种颜色代表不同的链路走向;其中红色就代表了跳转的链接,拨入国内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的拨入用户也跳转到外面的话,添加

ip rule add to 172.16.1.0/24 table 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