A-A+

linux之vpn服务器间ip隧道跳转多ip路由走向分流(系真实案例)

2015年11月23日 站长资讯 暂无评论

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

本文系真实案例;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的延迟要小。先看下图图吧;

1、如图所示;每种颜色代表不同的链路走向;其中红色就代表了跳转的链接,拨入国内Ip,其实是国外的ip;黑色代表了国内用户直连server1,使用国内ip,蓝色的代表了用户直连国外的机器,直接使用国外的ip,为什么要使用隧道呢,因为有的用户直连国外的服务器的话,延迟较大,隧道的话,可以减小延迟;

我想大家应该明白了吧,leader的意思就是国内机器既要对内服务,既要做跳转到外面,国外的机器既要做跳转的节点,又要做直连的服务器。具体走向,现在是根据拨入Ip实现控制,拨入Ip隧道对接Ip就跳转过去,其他的不实现跳转,减少成本啊

下面就开始部署步骤了;

1、部署两台机器的pptpd服务;五个ip监听各个ip,也就是五个进程;下面是配置文件;

  1. cat /etc/pptpd.conf  
  2. ppp /usr/sbin/pppd  
  3. option /etc/ppp/pptpd-options  
  4. logwtmp  
  5. connections 1024  
  6. listen 10.10.10.1  
  7. localip 172.16.0.1  
  8. remoteip 172.16.0.2-254  
  9. cat /etc/pptpd2.conf  
  10. ppp /usr/sbin/pppd  
  11. option /etc/ppp/pptpd-options  
  12. logwtmp  
  13. connections 1024  
  14. listen 10.10.10.2  
  15. localip 172.16.1.1  
  16. remoteip 172.16.1.2-254  
  17. cat /etc/pptpd3.conf  
  18. ppp /usr/sbin/pppd  
  19. option /etc/ppp/pptpd-options  
  20. logwtmp  
  21. connections 1024  
  22. listen 10.10.10.3  
  23. localip 172.16.2.1  
  24. remoteip 172.16.2.2-254  
  25. cat /etc/pptpd4.conf  
  26. ppp /usr/sbin/pppd  
  27. option /etc/ppp/pptpd-options  
  28. logwtmp  
  29. connections 1024  
  30. listen 10.10.10.4  
  31. localip 172.16.3.1  
  32. remoteip 172.16.3.2-254  
  33. cat /etc/pptpd5.conf  
  34. ppp /usr/sbin/pppd  
  35. option /etc/ppp/pptpd-options  
  36. logwtmp  
  37. connections 1024  
  38. listen 10.10.10.5  
  39. localip 172.16.4.1  
  40.   
  41. remoteip 172.16.4.2-254  

两台机器是配置是一样的,唯一差别就是监听地址不一样(listen);

下面是pptpd-options的配置

  1. cat /etc/ppp/pptpd-options |grep -v ^#  
  2. name pptpd  
  3. refuse-pap  
  4. refuse-chap  
  5. refuse-mschap  
  6. require-mschap-v2  
  7. require-mppe-128  
  8. proxyarp  
  9. lock  
  10. nobsdcomp  
  11. novj  
  12. novjccomp  
  13. nologfd  
  14. ms-dns 8.8.8.8  
  15. logfile /var/log/pptpd.log  
  16. plugin /usr/lib/pppd/2.4.5/radius.so  
  17. radius-config-file /etc/ppp/radius/etc/radiusclient.conf  

启动pptpd服务进程;

  1. pptpd -c /etc/pptpd.conf  
  2. pptpd -c /etc/pptpd2.conf  
  3. pptpd -c /etc/pptpd3.conf  
  4. pptpd -c /etc/pptpd4.conf  
  5. pptpd -c /etc/pptpd5.conf  

2、打通两台机器的隧道,测试

这里是10.10.10.1对接(跳转)到20.20.20.1

  1. Server1:  
  2.   
  3. ip tunnel del ethn  
  4. ip tunnel add ethn mode ipip local 10.10.10.1 remote 20.20.20.1  
  5. ifconfig ethn 172.0.0.1  
  6. route add -host 172.0.0.2 dev ethn  
  7. echo 1 > /proc/sys/net/ipv4/ip_forward  
  8. ip rule add to 172.16.0.0/24 table ipip pref 1700  
  9. #这要告诉他凡是pptpd,第一个Ip拨入用户分配的内网Ip0.0/24的走向ipip隧道,也就是跳转到外面  
  10. ip route add default dev ethn table ipip  
  11. server2  
  12.   
  13. ip tunnel del ethn  
  14. ip tunnel add ethn mode ipip local 20.20.20.1 remote 10.10.10.1  
  15. ifconfig ethn 172.0.0.2  
  16. route add -host 172.0.0.1 dev ethn  
  17. echo 1 > /proc/sys/net/ipv4/ip_forward  
  18. ip rule add to 172.16.0.0/24 table ipip pref 1700  
  19. 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的拨入用户也跳转到外面的话,添加

1

ip rule add to 172.16.1.0/24 table ipip pref 1700

两台机器分别;

  1. server1:  
  2.   
  3. iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j SNAT --to-source 10.10.10.2  
  4. iptables -t nat -A POSTROUTING -s 172.16.2.0/24 -o eth0 -j SNAT --to-source 10.10.10.3  
  5. iptables -t nat -A POSTROUTING -s 172.16.3.0/24 -o eth0 -j SNAT --to-source 10.10.10.4  
  6. iptables -t nat -A POSTROUTING -s 172.16.4.0/24 -o eth0 -j SNAT --to-source 10.10.10.5  
  7. server2:  
  8.   
  9. iptables -t nat -A POSTROUTING -s 172.16.0.0/24 -o eth0 -j SNAT --to-source 20.20.20.1  
  10. iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j SNAT --to-source 20.20.20.2  
  11. iptables -t nat -A POSTROUTING -s 172.16.2.0/24 -o eth0 -j SNAT --to-source 20.20.20.3  
  12. iptables -t nat -A POSTROUTING -s 172.16.3.0/24 -o eth0 -j SNAT --to-source 20.20.20.4  
  13. 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

标签:

给我留言