路由/IPtables 问题

路由/IPtables 问题

我有以下设置 -

Verizon Fios 路由器 - WAN - 公共 IP 地址 Verizon Fios 路由器 - LAN - 192.168.1.1

这直接连接到内部 Linux 路由器 -

内部路由器 Linux - eth0 - 192.168.1.2 内部路由器 Linux - eth1 - 10.10.10.1

我遇到的问题是,如果请求来自 10.10.10.x 网络或 192.168.1.2 网络到公共 IP 地址,则该请求会在网络领域的某个地方丢失。

Linux 路由器通过 Fios 路由器的 DMZ 功能直接连接到互联网。

我想我只是缺少一个基本的路线命令,但我不知道下一步该去哪里。

这一切之所以重要,是因为我试图在 Linux 路由器上运行 VNC-Java 客户端,以连接到直接在同一台机器上运行的 vncserver。当 Java 客户端进行连接时,它会尝试连接到外部 IP 地址,而 Linux 路由器实际上并不知道该地址,因为它认为该地址是 192.168.1.2。

我想还有其他解决方案......那就是告诉 tightvnc java 客户端连接到主机 192.168.1.2,但我也找不到具体在哪里设置它。

常规 VNC 客户端运行良好,但我想避免使用客户端软件。

想法/建议?我是不是因为一对一的 nat 而运气不好?

答案1

关于路由问题,因为您的内部网络使用不可路由的 IP 地址(私有),所以当它们通过外部 IP 地址出去时,您的 Linux 路由器必须“伪装”它们(这也是不可路由的,但您的 Linux 路由器不需要知道这一点 - Cisco 可以处理那部分)。

简单的事情

iptables -t nat -I 1 POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQURADE

应该可以解决问题。如果您能告诉我您在 Linux 路由器上使用的是什么发行版,那么我就可以更好地指导您如何将其永久设置为 Linux 路由器网络设置的一部分。

另外请确保您已ip_forwarding启用 - 检查输出sysctl net.ipv4.ip_forward:它应该显示“1”

答案2

除了 Guss 的答案(这是正确的)之外,您还需要确保所有计算机都配置了正确的默认网关。对于 10.10.10.x 子网上的计算机,这可能是 10.10.10.1。对于 192.168.1.x 子网上的所有计算机,这可能是 192.168.1.1(至少这是我从您的帖子中读到的)。

通常这些是通过 DHCP 设置的。如果您不使用 DHCP,则必须手动设置这些值(及其相应的子网掩码)。

相关内容