我有两个路由器,路由器A连接到Internet,路由器B连接到路由器A的LAN端口。
路由器A:192.168.1.1子网255.255.255.0
路由器B:从路由器A租用的IP:192.168.1.2自己的IP:192.168.0.1子网255.255.255.0
我有一台机器C插入到IP地址为192.168.1.3的路由器A上,还有一台机器D插入到路由器IP为192.168.0.199的B上
我想从计算机C访问计算机D。为此需要更改哪些设置?
我有两个路由器,路由器A连接到Internet,路由器B连接到路由器A的LAN端口。
路由器A:192.168.1.1子网255.255.255.0
路由器B:从路由器A租用的IP:192.168.1.2自己的IP:192.168.0.1子网255.255.255.0
我有一台机器C插入到IP地址为192.168.1.3的路由器A上,还有一台机器D插入到路由器IP为192.168.0.199的B上
我想从计算机C访问计算机D。为此需要更改哪些设置?
Answers:
我假设192.168.0.1不是路由器B上使用的网关,而是局域网接口上自己的IP。如果路由器A通过DHCP分发地址,它也将使用哪个网关通知B,它应该是192.168.1.1。如果可以从B的子网访问Internet,则情况就是这样,除非您有一个非常集中的设置,需要更详细的说明。
为了回答您的问题,机器C和D在单独的网络上,但是D可以很好地启动与C的连接。它无法在其自己的子网中找到IP 192.168.1.3,因此它将请求传递给其网关,即路由器B,后者确实知道目标计算机的位置。
反之则更困难。主机D本身及其网关(路由器A)都不知道打算发送给192.168.0.199的流量通过路由器B。即使这样做,例如通过定义路由“ 192.168.0.0/24穿过192.168.1.2”,路由器B不允许数据包从其WAN接口传递到LAN接口。
尽管通过将所有内容简单地连接到其LAN端口,将B用作“哑”交换机而不是路由器可能会更好,但是可以在不更改网络拓扑的情况下解决此问题。您将需要转发路由器B上用于192.168.0.0/24网络外部通信的端口。
例如,如果机器D正在运行Web服务器,必须从机器C发起与之的通信,则您将需要配置路由器B以将端口80转发到192.168.0.199。或者,如果路由器支持此功能,则可以将机器D放置在路由器B的DMZ中,从而将所有端口转发到该机器,除非另行配置。通常,这可能被认为是不安全的,但是在这种情况下,除非192.168.1.0/24网络受到威胁,否则机器仍将通过路由器A得到保护。
(假设您可以使路由器B的WAN接口成为普通的以太网接口,例如在电缆路由器上)
您需要在计算机C和D上都设置静态路由。如果您不具备基本的DHCP功能,并且计算机C和D从DCHP获取地址,则可以将路由自动推送到所有DHCP客户端。
否则,您可以这样设置路由:
视窗
机器C
route -p ADD 192.168.0.0 MASK 255.255.255.0 192.168.1.1 METRIC 1
机器D
route -p ADD 192.168.1.0 MASK 255.255.255.0 192.168.0.1 METRIC 1
Linux(添加到网络接口设置)
机器C
route add -net 192.168.0.0/24 gw 192.168.1.1
机器D
route add -net 192.168.1.0/24 gw 192.168.0.1
您要执行两次网络地址转换,并且可能将其设置为中等/严格设置。因此,路由器B隐藏了它的专用地址,这些地址是由路由器b的外部子网发起的连接,反之亦然。这是因为它假定连接到其WAN端口的网络是公共网络。通常,这很好,因为如果从专用网络内部建立连接,则路由器便知道将传入流量发送回何处。但是在您的情况下,双方都在执行NAT,因此双方都在向另一方隐藏其专用地址。这就是为什么您需要在NAT后面进行端口转发,以便路由器知道将从网络外部发起的连接路由到何处的原因。了解正在发生的事情的一种好方法是查看UDP打孔 许多VNC和游戏应用程序使用它来允许从外部启动连接。
严格的NAT通常是消费级路由器的一个限制,但是一些更好的允许您调整NAT设置。或者,您可以使用DD-WRT,tomato或其他允许对NAT进行调整的第三方固件。您还可以使用其他用户提到的端口转发(有点麻烦)。