源地址和目标地址的 Cisco NAT

网络工程 路由 路由器 思科-ios 纳特
2022-02-22 10:58:29

我以为我有一个相对简单的问题,但是我似乎无法在网上轻松找到解决方案。

我的问题是:我有两个 Cisco 1941 路由器,每个路由器都配置了自己的直接面向 Internet 的连接。假设 R0 是默认网关,R1 充当备份连接。我希望能够从两个 Internet 连接接收到我的邮件服务器的流量。由于邮件服务器有一个默认网关 R0,如果它接收到来自 R1 的流量,它不会将其返回给始发者。

从逻辑上讲,我认为这可以通过 Internet 地址源端的 NAT 来实现,这样就不会使用路由,并且服务器可以通过位于同一子网上的 NAT IP 地址返回路由器。

我的起始配置是这样的:

简单配置

R0配置:

gigabitethernet0/0
 ip address 192.168.200.1
 ip nat inside

Dialer0
 ip nat outside

ip nat inside source list 190 interface dialer0
ip nat inside source static tcp 192.168.200.10 25 interface dialer0 25
access-list 190 permit ip 192.168.200.0 255.255.255.0 any

R1配置:

gigabitethernet0/0
 ip address 192.168.200.2
 ip nat inside

Dialer0
 ip nat outside

ip nat inside source list 190 interface dialer0
ip nat inside source static tcp 192.168.200.10 25 interface dialer0 25
access-list 190 permit ip 192.168.200.0 255.255.255.0 any

我的邮件服务器是 192.168.200.10。

任何帮助表示赞赏。

3个回答

要做到这一点——消除非对称路由——你必须对数据包进行双重 NAT(“两次 NAT”)。第一个 NAT 重写目标(互联网到内部),第二个 NAT 将重写到传输路由器。我以前必须这样做;在IOS上,这是一个复杂的痛苦。我见过同时使用ip nat insideandip nat outside的例子,但我不确定这对同一个数据包是否有效。(这就是我使用复杂环回接口的原因)

(如果您可以使用运行 8.3+ 的 ASA,那么搞砸的“新 NAT”可以在一个命令中进行源和目标重写。这是这种疯狂的唯一好处。)

解决通过任一互联网连接接收传入电子邮件的问题:您可以为您的邮件服务器提供两个 IP 地址(在两个以太网接口上,或作为辅助地址)并为其提供源地址路由,以便它获得不同的路由,具体取决于哪个发送的 IP 地址。Linux的操作指南。)

在 DNS 中,用两条 A 记录通告服务器(发送客户端将随机选择);或者使用两个 MX 记录(可以优先考虑)。

   isp0           isp1
    |1.1.1.1       |2.2.2.2
    r0             r1
    |.1            |.2
====+====+====+====+====
       |.11   |.22
         server

您还可以考虑使用第二个电子邮件服务器,它接受邮件并将其转发到主服务器。它使路由问题变得微不足道,而邮件问题变得更加困难:取决于哪个对您和您的操作系统更容易,以及您在哪里看到您想要最小化的风险。

寻址发送:最简单的方法还是在服务器上,通过脚本检查可达性并操纵服务器的路由。

当然,正确的互联网设计是在 ISP 端执行此操作,但除了大地址块之外,您通常无法完成重新路由。如果两个路由器都连接到同一个 ISP,它们可能有办法帮助您;但如果它们都在同一个 ISP 上,你就不会获得太大的弹性。

希望有帮助

乔纳森。

如果我理解您的问题,您必须对任何单个流的传入和传出流量使用相同的路由器。这是因为路由器的 NAT 表只存在于该路由器上。

如果您有流量从 R1 传入,但响应从 R0 传出,则对话将中断,因为响应将具有不同的源地址,与另一端的预期不匹配。

您需要以这样一种方式进行设置,即任何响应流的流量都将退出原始流量进入您网络的同一路由器。使用一个简单的网络,就像您拥有的那样,您实际上只需要创建 Active/Standby 而不是您正在尝试做的事情。