接口和 nat 之间的路由(ip 别名)

接口和 nat 之间的路由(ip 别名)

我有 2 台服务器,均通过 switch0 连接(无 vlan),server1 有 2 个 NICS

eth0 --> switch0
ppp0 --> modem --> internet
cat /proc/sys/net/ipv4/ip_forward 1

192.168.1.0/24
192.168.1.212 netmask 255.255.255.0

路线:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 ppp0
10.10.10.0      10.10.10.1      255.255.255.0   UG    0      0        0 tun0
10.10.10.1      0.0.0.0         255.255.255.255 UH    0      0        0 tun0
151.7.202.72    0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
172.16.212.0    0.0.0.0         255.255.255.0   U     0      0        0 vmnet1
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.116.0   0.0.0.0         255.255.255.0   U     0      0        0 vmnet8

server2 是:

192.168.1.0/24
192.168.1.252 netmask 255.255.255.0 --> switch0

具有 3 个 LAN、3 个 NICS:

192.168.1.0/24 netmask 255.255.255.0 --> switch0
192.168.2.0/24 netmask 255.255.255.0 --> switch1
193.168.3.0/24 netmask 255.255.255.0 --> switch2

路线:

Destination        Gateway            Flags    Refs      Use  Netif Expire
default            192.168.1.212      UGS         0   168553   bge0
10.10.10.0/24      10.10.10.1         UGS         0        0   tun0
10.10.10.1         link#12            UH          0        0   tun0
10.10.10.2         link#12            UHS         0        0    lo0
127.0.0.1          link#10            UH          0     1897    lo0
192.168.1.0/24     link#1             U           0    42375   bge0
192.168.1.252      link#1             UHS         0        4    lo0
192.168.2.0/24     link#7             U           0   117807    rl0
192.168.2.252      link#7             UHS         0        0    lo0
192.168.3.0/24     link#8             U           0   161828    rl1
192.168.3.252      link#8             UHS         0        0    lo0

我需要创建从 192.168.1.0/24 到所有其他 LAN 的路由。

我应该在 server2 上使用 IP 别名吗?

答案1

这实际上非常简单。

在服务器 2 上:编辑(以 sudo 身份)文件 /etc/sysctl.conf,找到以下行

  #net.ipv4.ip_forward=1

并取消注释,

  net.ipv4.ip_forward=1

保存文件,发出命令:

  sudo sysctl -p

这只是告诉你的内核允许数据包从一个 NIC 传递到另一个 NIC。

另外,我们需要在其上配置 NAT,以便返回数据包可以通过 server2 正确路由。发出以下命令:

  sudo iptables -t nat  -A POSTROUTING -o rl0 -j MASQUERADE
  sudo iptables -t nat  -A POSTROUTING -o rl1 -j MASQUERADE

这假设您的默认 iptables 策略全部为“接受”。如果不正确,我们将不得不在您的防火墙上再打几个洞。

现在到服务器 1。发出以下命令:

  sudo route add -net 192.168.2.0/24 default gw 192.168.1.252
  sudo route add -net 192.168.3.0/24 default gw 192.168.1.252

这两个命令只是指示您的 server1,如果它发现发往 192.168.2.0/24 或 192.168.3.0/24 的数据包,则应将该数据包路由到 server2,由 server2 处理该数据包。

您没有指定是否希望 192.168.2.0/24 或 192.168.3.0/24 上的客户端能够通过 server2 访问 192.168.1.0。如果要,请添加

  sudo iptables -t nat -A POSTROUTING -o bge0 -j MASQUERADE

到你的防火墙。

最后,我非常希望子网 192.168.2.0/24 和 192.168.3.0/24不是通过不同的路由连接到 Server1,因为这意味着您的配置中存在闭环,需要一些先进的仪器来正确处理这个问题。

相关内容