在网络和系统运维工作中,我们不免会遇到突增的网络需求,但是原有的网络架构硬件级设备不允许改动的情况下,我们一般都会想到,可不可以在服务器的操作系统上做做手脚呢?
之前博主分享过两篇关于基于操作系统的端口转发技术:
【linux】iptables创建dnat、snat端口转发 、 【windows】netsh创建的portproxy端口转发映射
今天博主就给大家分享总结一下,关于两个操作系统路由转发的功能真实案例;
首先介绍一下今天案例的环境和方案:
两个市场A和B,两个网络为异地分开的,现在A网络的一台windows服务器a,要访问B网络的一台windows服务器b,并实现互通;B网络的防火墙是hillstone的E系列山石下一代防火墙,我在这台防火墙上配置了开放b服务器所有资源权限的终端到站点的SSL-VPN;
然后A网络的a服务器,通过hillstone的sc-vpn客户端,登录VPN,使其可以访问B网络的b服务器;
这里值得一说的是,正常情况下,sslvpn是客户端到站点拨号连接,也就是单方面的访问资源,但事实上,特殊情况下两边是可以互相通信的。
这一案例中,hillstone的sslvpn,会给a分配一个ip比如为192.168.1.10,网关是192.168.1.1,虚拟网卡;
而a服务器本身有一个ip:192.168.2.10,b服务器ip则为192.168.3.10,网关是hillstone防火墙192.168.3.1。
如此,我a服务器使用1.10这个ip便可以互相访问b服务器3.10,类似于直连间路由。
但是b服务器访问不了a服务器的2.10这个ip;这个时候就需要在hillstone防火墙上添加一条vpn的路由策略,即隧道间路由,到2.0网段的数据路由走192.168.1.1;
但是这个时候,我发现b仍然访问不了a的2.10的ip,这是为什么呢?
百思不得其解,想到为什么a可以访问b的3.10,因为vpn隧道形成了类似于直连网络,可以直接路由通信。
但是为什么反过来就不行了呢?192.168.2.10和1.10都是a服务器上的ip,为什么只能通其一不能通其二。
因为无法路由,服务器没有开启tcp/ip协议的路由转发功能。
是不是豁然开朗,今天的重点来了,在windows服务器a上开启路由转发功能,从而实现a的2.10和b的3.10互相通信。
毕竟1.10和1.1是vpn隧道的两端交点ip,一般不做为服务监听ip使用哦。
并在此基础上,我在A网络的另外一台服务器c上ip为192.168.2.11,配置一条路由,访问b服务器的网关是192.168.2.10。
便可实现,c和b服务器的互相通信,这个不难理解。
当然任何一个网络的配置,都要受当下网络架构和设备的影响,应看具体情况来规划配置。
在本案例中,需求就是让a和b,c和b之间互相通信,方法有很多,有时候就是灵机一动的问题,你还不要不信,想到了很简单,但是一般是想不到的,就会觉得难。所以在维护工作中,一定不能不假思索的处理一些事情,多想多看多请教,除非是很有把握的事情。当然很多工作中也是有严格要求的,并不能让我们为所欲为的搞一下,在这个案例中让其两边市场购买专用的vpn设备,配置ipsec这种站点到站点的vpn最为稳妥和提倡的。因为在大型网络中你配置的越多维护和交接越困难,出问题也更难排查。
说了这么多,下面让我们赶紧看一下,如何在widnows上启用路由转发功能吧!
①、基于windows系统的路由转发功能
很简单,首先我们需要Win + R 运行命令“regedit”打开注册表编辑器,找到一下表项:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSet ServicesTcpipParameters 下的 IPEnableRouter数值为“1”时意为启用支持对所有网络连接的路由功能,数值为“0”则表示关闭路由转发功能。
当然这个时候可能还不成功,因为还需要一个服务器的支持“Routing and Remote Access”、在局域网以及广域网环境中为企业提供路由服务。
方法是:Win + R运行命令“services.msc”打开本地服务管理,找到这个服务并启用它,默认这个是服务是被禁用的。
思考·扩展注意,事实上这个时候已经可以实现路由转发功能了,但某些时候可能还受限一下本地网络策略影响,具体针对;
当然有必要我们也可以配置服务器管理里面的功能角色:路由和远程访问、有兴趣的可以研究研究。
注意这里启用的是路由间转发功能,是有别于系统本身外出访问配置的静态路由的,不要有疑惑哦。
比如上面我们说到,另外一台服务器c-2.11,需要和b通信,中间经过a的路由转发,则需要在c上添加一条默认路由;
C:UsersAdministrator>route add -p 192.168.3.10/32 192.168.2.10 操作完成!C:UsersAdministrator>route print===========================================================================永久路由: 网络地址 网络掩码 网关地址 跃点数 0.0.0.0 0.0.0.0 192.168.2.1 默认 192.168.3.10 255.255.255.255 192.168.2.10 1===========================================================================这里“-p”是永久添加的意思,当然这里c是widnows服务器,如果是linux服务器则怎么办呢?
[root@Moni ~]# route add -host 192.168.3.10 gw 192.168.2.10当然linux中命令添加路由只是临时的重启则失效,windows和linux有关默认路由的配置可以参考以下博文:
【系统集成】win、linux系统添加静态路由
②、linux的路由转发功能
相比于windows,linux对于路由转发的支持还是很友好的,启用也很简单,在博文开始提到的iptables端口转发博文和上面添加静态路由的博文中也有提到过:
[root@Moni ~]# echo 1>/proc/sys/net/ipv4/ip_forward同样我们也可以修改文件,让其系统在启动时便生效:
[root@Moni ~]# vim /etc/sysctl.conf# Controls IP packet forwardingnet.ipv4.ip_forward = 1和windows一样,“1”代表着启用,“0”代表着关闭。
(今天的分享就到这里,如果您有高见或好的分享,记得留言哦!)
原创文章,转载请注明:转自于公牛博客