具有辅助 IP 地址的 Linux nat

具有辅助 IP 地址的 Linux nat

我想在具有多个公共 IP 地址(位于不同的子网和不同的网关,但具有相同的物理以太网接口)的服务器/路由器上设置 nat,使用地址 A 来处理来自服务器的所有本地流量,使用地址 B 来处理 nat 后面的其他机器。我之前做过很多简单的 nat 设置,但很少在同一台机器上使用多个非本地网络专用地址。假设我想要的设置是可行的,我该如何设置它?

答案1

从您的要求中我了解到,您需要两个 nat,一个用于本地网络,另一个用于服务器本身。您希望本地 ips/LAN 应通过地址 A 发出,服务器生成的流量应通过地址 B 发出。

首先通过子接口在外部以太网上添加地址 A 和地址 B。

ifconfig eth0 address A/x.x.x.x

ifconfig eth0:1 address B/x.x.x.x

第二步 添加LAN网络的SNAT规则

iptables -t nat -A POSTROUTING -s < LAN IP NETWORK > -o eth0 -j SNAT --to < address a >

第三,为其余部分添加 SNAT(这也将包括源机器)

iptables -t nat -A POSTROUTING  -o eth0 -j SNAT --to < address B >

如果这不起作用,我们可以测试一下。

答案2

假设我们有一个A名为的主要接口eth0

inet 192.168.1.1  netmask 255.255.255.0  broadcast 192.168.1.255

另一个接口B名为eth1

inet 192.168.2.1 netmask 255.255.255.0  broadcast 192.168.2.255

C另外,子网中还有第三个网络10.0.0.0/24,我们希望将流量路由到AB

首先检查ip rule ls

0:      from all lookup local 
32766:  from all lookup main 
32767:  from all lookup default

和主路由策略ip route list table main

default via 192.168.1.1 dev eth0 
10.0.0.0/24 dev lxc  proto kernel  scope link  src 10.0.0.1 
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.1 metric 100 

现在我们要为具有 IP 地址的邮件服务器添加一条规则,10.0.0.13以通过B接口进行路由。

echo "200 mail" >> /etc/iproute2/rt_tables
ip rule add from 10.0.0.13 table mail

检查路由表ip rule ls

0:      from all lookup local 
32765:  from 10.0.0.13 lookup mail 
32766:  from all lookup main 
32767:  from all lookup default

最后我们添加默认路由并刷新缓存:

ip route add default via 192.168.2.1 dev eth1 table mail
ip route flush cache

相关内容