网络方案需求背景:
客户在某IDC机房托管了一台服务器,此服务器额外增加了有4个可用IP地址,目前只用了原服务器上的一个IP地址,其余4个额外的IP虽然以子IP的方式设置好了,互联网上也能PING的通,但这4个额外的IP一直是空闲着,完全处于浪费状态,所以客户打算把这些IP地址通过隧道方式映射出来给别的地方的机器用,如公司自己机房的服务器。
因为不涉及重要的要加密的数据传输,所以打算用最简单的IPIP隧道方式将服务器上额外的IP地址映射至给其它服务器使用!方案设计图如下:
下面以服务器A(拿来做映射的IP:183.53.111.131)和服务器B(假设公网IP为:113.77.12.3)之前建立IPIP隧道举例,以下是具体的实施步骤:
一、检查服务器A所有额外的IP地址是否设置正确和IP是否可PING通(可参考文章“如何在Ubuntu linux系统上使用单一网络接口添加多个IP地址?”):
通过vi命令编辑配置文件/etc/network/interfaces, 如果你使用的是老版本的ubuntu linux系统,默认的网卡标识应该是eth0,若是最新的系统,如Ubuntu 16.x,则网卡标识可能是ens0,你可以通过ifconfig -a 命令查看当前系统的网卡标识和IP地址、子网掩码、网关等信息。若新加一个IP,则网卡标识为eth0:0,再添加一个IP,则网卡标识为eth0:1以此类推eth0:2、eth0:3,类似如下图所示:
以上红色框部份IP替换为需要映射到异地机房服务器上的IP地址,下同。若你想映射多个IP则如上图所示逐一添加。保存后执行ifup eth0:0、ifup eth0:1、ifup eth0:2、ifup eth0:3激活新IP,你也可以直接输入reboot命令重启服务器使其生效(一般服务器都跑着重要的应用,不到万不得已一般不使用重启生效这招,Linux类服务器不像Windows服务器动不动就要重启生效!). 完成IP配置后请在其它地方的服务器上ping一下这些待映射的IP地址看看是否能ping的通。
二、开启服务器A内核转发功能
通过vi编辑/etc/sysctl.conf配置文件,删除net.ipv4.ip_forward=1这一行行首的注释符(把#字符删除)。 保存退出后执行如下命令使之生效。
[email protected]:~# sysctl -p
三、开始设置IPIP隧道
在服务器A上依次执行如下命令:
其中服务器B公网IP(113.77.12.3)替换为你异地机房服务器的IP地址。接着在服务器B上依次执行:
四、设置路由表和映射
在服务器A上依次执行:
在服务器B上依次执行:
OK,大功告成,服务器A额外的IP:183.53.111.131映射给服务器B设置完毕,现在你可以在服务器B上用服务器A的IP了。备注:以上所有IP地址均为虚构,如有雷同,纯属巧合!