VMware Linux虚拟主机双路由的一种配置方式
大体网络拓扑如图:
VM物理机单网卡,IP192.168.1.2,VM虚拟机IP192.168.1.3,默认网关192.168.1.1;
因业务需要,需经常往公有云主机(假设IP为222.172.200.68)上传文件;
因192段外联为10M专线,带宽较小,172段外联为500M光宽带,50M上行,比192段的上行要大,在不改变默认路由的情况下,指定目标主机222.172.200.68从172.16.1.1出去。
解决办法:
1、在192.168.1.3虚拟主机当前网卡上添加一个172段IP地址,默认网关172.16.1.1;(如果没有这一步,下一步加路由时将报错:SIOCADDRT: 网络不可达);
2、在虚拟主机上添加路由:route add -host 222.172.200.68 gw 172.16.1.1;
3、traceroute追踪路由,已实现上述需求;
问题:
之前可以通过192段对应的专线公网IP访问到1.3虚拟主机,上述处理后,1.3虚拟主机对222.172.200.68的回程路由发生改变,无法建立TCP连接,将不能再通过专线公网IP访问进来。
解决设想1:222.172.200.68访问进来后通过NAT设备进行反向NAT配置,对1.3虚拟主机而言,222.172.200.68访问进来的源IP发生改变,回程路由按照其默认路由从192段返回,可以建立TCP连接了。
解决设想2:在另外一台服务器上部署nginx,利用其TCP转发,用nginx主机地址与1.3虚拟主机之间建立连接;
由于没有多的NAT设备了,采用设想2,nginx的TCP转发配置参考:https://www.cnblogs.com/baolin2200/p/7803511.html
SCP指定端口参考:https://www.cnblogs.com/jixingke/p/6213074.html
nginx配置如下:
worker_processes 1;
events {
worker_connections 1024;
}
# 此为TCP转发请求 stream
stream {
upstream stream_backend {
server xxx.xxx.xx.x:22;
}
server {
listen 2122;
proxy_pass stream_backend;
}
}
最终实现了上行、下行分别走不同的路由。
PS:Linux单网卡双IP双网关配置方法:
参考:https://blog.****.net/cooling88/article/details/51042633
etho对应IP:192.168.1.2
cp ifcfg-eth0 ifcfg-eth0\:1
vi ifcfg-eth0:1
DEVICE=eth0:1 #网络虚拟接口eth0:1
ONBOOT=yes #启动的时候**
BOOTPROTO=static #使用静态ip地址
IPADDR=172.16.1.2 #分配ip地址
NETMASK=255.255.255.0 #子网掩码
#GATEWAY=172.16.1.1 #eth0配置已经有网关,如果网关上做了路由或者两个网段在一个交换网络,可省略;
**:ifconfig eth0:1 up
重启:service network restart