知方号

知方号

系统集成linux和windows的路由转发

系统集成linux和windows的路由转发

场景需求:

在网络和系统运维工作中,我们不免会遇到突增的网络需求,但是原有的网络架构硬件级设备不允许改动的情况下,我们一般都会想到,可不可以在服务器的操作系统上做做手脚呢?

之前博主分享过两篇关于基于操作系统的端口转发技术:

【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”代表着关闭。

(今天的分享就到这里,如果您有高见或好的分享,记得留言哦!)

原创文章,转载请注明:转自于公牛博客

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。