我可以在NODE.js中为出站套接字设置静态网络路由吗?

我可以在NODE.js中为出站套接字设置静态网络路由吗?,node.js,nic,Node.js,Nic,我的服务器中有三个网卡,其中VMware“拥有”一个子网192.168.114.0和一个网关192.168.114.1 我在主机(10.x.x.x)NIC上运行了一个“记录器”应用程序,第三个NIC用于172.x.x.x的出站流量,这在这里并不相关 My Node.js服务器正在侦听192.168.114.1在主NIC为10.x.x.x的服务器上运行。在VMware中,还有其他服务器运行192.168.114.x范围内的所有IP 10.x.x.x上还安装了一些数据库,VMware服务器可以毫无问

我的服务器中有三个网卡,其中VMware“拥有”一个子网192.168.114.0和一个网关192.168.114.1

我在主机(10.x.x.x)NIC上运行了一个“记录器”应用程序,第三个NIC用于172.x.x.x的出站流量,这在这里并不相关

My Node.js服务器正在侦听192.168.114.1在主NIC为10.x.x.x的服务器上运行。在VMware中,还有其他服务器运行192.168.114.x范围内的所有IP

10.x.x.x上还安装了一些数据库,VMware服务器可以毫无问题地访问这些数据库

VMware中的服务器发现Node.js服务器很好(TCP SYN已发送),但Node.js会在10.x.x.x界面上发送所有TCP包,因此我无法将任何内容返回到VMware服务器

向Windows添加静态路由并不能解决这个问题,因为Node.js仍然选择最低的指标,这似乎总是主要NIC

作为测试,我使用10.x.x.x地址添加了一个新的VMware服务器,然后Node.js正确发送数据包。我还测试了将主NIC设置为192.168.114.x地址,这也使它能够工作,因此这显然是一个路由问题


问题是,如何让Node.js路由到选定的NIC而不是主NIC?

这取决于您正在做什么

或者,您可以将接口的IP作为第二个参数传递给服务器实例的
listen()


对于或您可以传递一个
localAddress
选项,该选项包含您要使用的接口的IP。

感谢您的回复!我在VMware界面(192.168.114.1)上有“侦听”,该子网中的VMware服务器“查找”服务器。即TCP SYN数据包到达Node.js服务器。问题是,从Node.js“返回”的SYN ACK将进入10.x.x.x的主NIC,这意味着发送服务器不会“看到”它,因此无法建立TCP会话。我需要SYN ACK在SYN进入的同一个NIC上发出…这更像是一个服务器故障问题。听起来你在node.js方面做得很好。