我们在网络上设置了一个 Vyatta Core 6.1 网关,它有三个接口:
eth0
-1.1.1.1
- 公共网关/路由器 IP(到公共上游路由器)eth1
--2.2.2.1/24
公共子网(连接到第二个防火墙2.2.2.2
)eth2
-10.10.0.1/24
- 私有子网
我们的 ISP1.1.1.1
为我们提供了用作网关的地址。该2.2.2.1
地址是为了让其他防火墙 ( 2.2.2.2
) 能够与此网关通信,然后网关会通过eth0
接口路由流量。
这是我们当前的配置:
interfaces {
bridge br100 {
address 2.2.2.1/24
}
ethernet eth0 {
address 1.1.1.1/30
vif 100 {
bridge-group {
bridge br100
}
}
}
ethernet eth1 {
bridge-group {
bridge br100
}
}
ethernet eth2 {
address 10.10.0.1/24
}
loopback lo {
}
}
service {
nat {
rule 100 {
outbound-interface eth0
source {
address 10.10.0.1/24
}
type masquerade
}
}
}
使用此配置,它会路由所有内容,但伪装后的源地址是1.1.1.1
,这是正确的,因为这是它绑定到的接口。但由于我们这里的一些要求,我们需要它从地址获取源2.2.2.1
(如果我们唯一可以从网关发送的地址是我们的网关,那么支付 C 类公共子网的费用有什么意义呢?)。
我尝试过绑定到br100
而不是eth0
,但如果我这样做,它似乎不会路由任何东西。
我想我只是错过了一些简单的东西。有什么想法吗?
答案1
这种行为的配置方式是合理的。你对“另一个”防火墙做了什么?这可能就像通过第二个防火墙路由你的流量一样简单,但它引出了一个问题,“为什么有 2 个防火墙?”根据配置,任何来自 10.10.0.1/24 的流量都将在另一端转换为 1.1.1.1。(使用端口地址转换)如果你需要防火墙后面的系统为自己“声明”你的一个公共 IP,你还需要设置静态 NAT。
它看起来像这样:
(取自这里以获取更详细的参考。
设置服务 nat 规则 1
编辑服务 nat 规则 1
设置类型目的地
设置翻译类型静态
设置入站接口 eth0
设置所有协议
设置源网络 0.0.0.0/0
设置目标地址公共 IP
设置内部地址内部 IP
设置服务 nat 规则 2
编辑服务 nat 规则 2
设置类型源
设置翻译类型静态
设置出站接口 eth0
设置所有协议
设置源地址内部 IP
设置目标网络 0.0.0.0/0
设置外部地址公共 IP
答案2
不要使用伪装,使用 DNAT 或 SNAT(我总是忘记哪一个) - 然后您可以指定公共 NAT 地址。
伪装基本上适用于动态地址(即消费者 adsl),其中静态地址由于会发生变化而无法指定。