我有两难;我有一个客户的应用程序服务器运行在 CentOS 5(最新)上。应用服务器配置了2个接口:
eth0 - connect to the client network with subnet 192.168.3.0/24
eth1 - connects to local subnet which hosts all the devices the application manages with subnet 192.168.1.0/24
问题是客户端有一个远程办公室,该办公室的子网与应用服务器内部网络(即 192.168.1.0/24)重叠,并且希望该子网中的用户可以访问应用服务器。这里有一些 ascii 艺术来帮助理解拓扑:
|--------------------------------------------| |---------------------------------------------------|
| Application Server Internal Network | | Internal Client Network |
| | | Remote Network |
| ---------------- | | --------------- ------------------ |
| | | | 192.168.3.0/24 | | Client | | | |
| 192.168.1.0/24 <>--<> App Server <>------<> <>-------<> Controlled | | 192.168.1.0/24 | |
| eth1| |eth0 | | .1| Cisco Router | | | |
| .1----------------.10 | | ---------------- ------------------ |
|--------------------------------------------| |---------------------------------------------------|
我试图通过调用 Linux 路由器功能(iptables 以 DNAT、SNAT、NETMAP、ROUTE 等为目标)来解决这个问题,但我很难过。客户端尝试访问 192.168.3.10 以访问 Web 应用程序,但数据包永远不会返回,因为应用程序服务器将连接尝试视为来自本地连接的设备并继续对 MAC 地址进行 arp。我已经在我们的实验室中设置了一个测试环境,这就是当我尝试从客户端 PC 执行 ping 操作时 tcpdump 显示的内容:
tcpdump -n -l -i eth0 net 192.168.1.0/24
15:50:40.006196 IP 192.168.1.48.10689 > 192.168.3.10.10690: S 1413694241:1413694241(0) win - <mss 1460,nop,nop,timestamp 1413694241 0,nop,wscale 1>
15:50:41.002813 IP 192.168.1.48.10689 > 192.168.3.10.10690: S 1413694241:1413694241(0) win - <mss 1460,nop,nop,timestamp 1413694242 0,nop,wscale 1>
tcpdump -n -l -i eth1 net 192.168.1.0/24
15:50:40.008269 arp who-has 192.168.1.48 tell 192.168.3.10
15:50:41.003657 arp who-has 192.168.1.48 tell 192.168.3.10
我已经要求客户在他们的 Cisco 路由器上实施 NAT,他们已经开始变更批准流程。但是,他们的网络更改请求需要 3 周多的时间才能获得批准,因此他们希望这个问题可以在 Linux 端尽快解决;应用程序服务器不在他们的变更批准过程中,因为它是一个孤立的网络并在我们的直接控制之下!我们唯一不能做的就是更改应用服务器eth0接口上的IP地址!
干杯,好。