如何从第三个子网访问 Ubuntu 服务器上的两个子网(双 NIC)?

如何从第三个子网访问 Ubuntu 服务器上的两个子网(双 NIC)?

这是我的家庭网络,我在这里进行了大量学习。

请参阅文章底部有关 VLAN 和相关区域防火墙规则的详细相关细节,因为它很长

我已成功为 6 台 Windows 服务器中的每一台分配了 2 个 NIC(管理/DMZ),并使用 LAN 中的 Windows 笔记本电脑访问管理后台的内容,以便对交换机/路由器等进行 RDP/Web 访问。我可以从我的 Windows LAN 机器 ping 每台服务器到它们的 DMZ 和管理 IP 并获得返回。

因此,几天前我添加了具有相同配置的 Ubuntu 16 LTS 服务器,但无法从 Windows 笔记本电脑 ping 两个 IP。

这是我的 /etc/network/interfaces 文件

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address 192.168.67.100
        netmask 255.255.255.0
#       network 192.168.67.0
#       broadcast 192.168.67.255
        gateway 192.168.67.253
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 192.168.67.253
        dns-search on.fake.network

# Management network interface
auto eth1
iface eth1 inet static
        address 192.168.7.100
        netmask 255.255.255.0
#       network 192.168.7.0
        broadcast 192.168.7.255

#persistent static routes
up route add -net 192.168.1.0/24 gw 192.168.7.253 dev eth1

我的 IP 路由表

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.67.253  0.0.0.0         UG    0      0        0 eth0
192.168.1.0     192.168.7.253   255.255.255.0   UG    0      0        0 eth1
192.168.7.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.168.67.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0

因此,使用此配置,我可以 ping 192.168.7.100,但不能 ping 192.168.67.100,我取出持久静态路由及其对立面 :/

我怎样才能获胜?这在 Windows 中相当容易,但在 Ubuntu 中却让我很为难。

* 额外细节 *

Ubiqiti ERL3 路由器创建 VLAN

VLAN 7 - Management (192.168.7.0) - Router interface (GW) IP is 192.168.7.253
VLAN 13 - LAN (192.168.1.0) - Router interface (GW) IP is 192.168.1.253
VLAN 67 - DMZ (192.168.67.0) - Router interface (GW) IP is 192.168.67.253

通过 LAN 连接的 Windows 笔记本电脑

VLAN 13 - LAN (192.168.1.15)

Ubuntu Server(通过 Hyper-V 主机)有 2 个 NIC

eth0 - VLAN 67 - DMZ (192.168.67.100)
eth1 - VLAN 7 - Management (192.168.7.100)

从 LAN 192.168.1.15 向 DMZ/MGMT 192.168.67.100/192.168.7.100 发起 Ping

以下是与此场景相关的精简防火墙规则,删除了 SSH/HTTP 访问等额外内容。

注意“address-group mgmtfromlan”包含来自 LAN 的几个 IP,包括 192.168.1.15(LAN VLAN 中的笔记本电脑)

name lan-dmz {
    default-action drop
    enable-default-log
    rule 1 {
        action accept
        state {
            established enable
            related enable
        }
    }
    rule 2 {
        action drop
        log enable
        state {
            invalid enable
        }
    }
    rule 100 {
        action accept
        description "Allow ICMP"
        log enable
        protocol icmp
    }
}
name lan-mgmt {
    default-action drop
    enable-default-log
    rule 1 {
        action accept
        state {
            established enable
            related enable
        }
    }
    rule 2 {
        action drop
        log enable
        state {
            invalid enable
        }
    }
    rule 100 {
        action accept
        description "Allow ICMP"
        log enable
        protocol icmp
        source {
            group {
                address-group mgmtfromlan
            }
        }
    }
}
name dmz-lan {
    default-action drop
    enable-default-log
    rule 1 {
        action accept
        state {
            established enable
            related enable
        }
    }
    rule 2 {
        action drop
        log enable
        state {
            invalid enable
        }
    }
}
name mgmt-lan {
    default-action drop
    enable-default-log
    rule 1 {
        action accept
        state {
            established enable
            related enable
        }
    }
    rule 2 {
        action drop
        log enable
        state {
            invalid enable
        }
    }
    rule 100 {
        action accept
        description "Allow ICMP"
        log enable
        protocol icmp
    }
}

* Windows 笔记本电脑上的路由表 192.168.1.15 *

===========================================================================
Interface List
 15...b8 ca 3a d4 bb bc ......Intel(R) 82579LM Gigabit Network Connection #2
  5...3c a9 f4 03 73 ed ......Microsoft Wi-Fi Direct Virtual Adapter #2
 19...00 ff d4 0e 47 e9 ......TAP-Windows Adapter V9
  7...3c a9 f4 03 73 ec ......Intel(R) Centrino(R) Ultimate-N 6300 AGN #2
  1...........................Software Loopback Interface 1
 12...00 00 00 00 00 00 00 e0 Microsoft Teredo Tunneling Adapter
===========================================================================

IPv4 Route Table
===========================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0    192.168.1.253     192.168.1.15    291
        127.0.0.0        255.0.0.0         On-link         127.0.0.1    331
        127.0.0.1  255.255.255.255         On-link         127.0.0.1    331
  127.255.255.255  255.255.255.255         On-link         127.0.0.1    331
      192.168.1.0    255.255.255.0         On-link      192.168.1.15    291
     192.168.1.15  255.255.255.255         On-link      192.168.1.15    291
    192.168.1.255  255.255.255.255         On-link      192.168.1.15    291
        224.0.0.0        240.0.0.0         On-link         127.0.0.1    331
        224.0.0.0        240.0.0.0         On-link      192.168.1.15    291
  255.255.255.255  255.255.255.255         On-link         127.0.0.1    331
  255.255.255.255  255.255.255.255         On-link      192.168.1.15    291
===========================================================================
Persistent Routes:
  Network Address          Netmask  Gateway Address  Metric
          0.0.0.0          0.0.0.0    192.168.1.253  Default
          0.0.0.0          0.0.0.0    192.168.1.253  Default
===========================================================================

IPv6 Route Table
===========================================================================
Active Routes:
 If Metric Network Destination      Gateway
  1    331 ::1/128                  On-link
  1    331 ff00::/8                 On-link
===========================================================================
Persistent Routes:
  None

提前致谢

答案1

设置默认路由后,ubuntu VM 在 eth1 上收到一个数据包(来自 192.168.1.15:ping 192.168.7.100)。它将执行以下操作之一:

  • 由于反向路径过滤而丢弃数据包:在没有到该数据包源的路由的接口上接收数据包。
  • 通过 eth0 应答,因为 192.168.1.15 与 eth0 上通过 192.168.1.253 的默认路由匹配

行为取决于/proc/sys/net/ipv4/conf/{all,eth1}/rp_filter值,但默认为 drop:all/rp_filter = 1 和 eth1/rp_filter = 1

在未丢弃的情况下:路由器 ERL3 看到来自 192.168.1.7.100 的回复数据包,该数据包应位于 lan-mgmt 中,但从 lan-dmz 传输。根据您写的路由器配置中可能描述的设置,但我不知道:

  • 会将其丢弃,原因大致与 ubuntu 在启用 rp_filter 时将其丢弃的原因相同:它的路由在其他地方
  • 无论如何都会接受。

假设 ERL3 接受它。那么“修复”就很简单了:通过禁用反向路径过滤来降低 ubuntu 的安全性:

echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/eth1/rp_filter

參考文獻:https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt(rp_过滤器)

(其工作方式是,eth0 保持受保护,但这与此无关)

先试一下,如果有效,问题就解决了。考虑将两者替换echo 0echo 2仅用于 eth1(松散模式)。但请考虑这仍然是一个问题:非对称路由可能会产生其他问题,尤其是在防火墙方面。

如果路由器 ERL3 也在过滤(即:上述方法不起作用):ubuntu 必须知道 192.168.1.0/24 的存在,并且使用tablerule设置正确的路由。除了如何解释之外,解释所有为什么有点困难,这里有一个参考,虽然不完全适用于这种情况,但可以主要基于(我在这里做了):

參考文獻:http://lartc.org/howto/lartc.rpdb.multiple-links.html

我选择任意表 7 和 67 来匹配 192.168.7.0/24 和 192.168.67.0/24。从空路由开始(除了自动创建的本地 lan 路由之外),然后:

ip route add 192.168.67.0/24 dev eth0 src 192.168.67.100 table 67
ip route add default via 192.168.67.253 table 67
ip route add 192.168.7.0/24 dev eth1 src 192.168.7.100 table 7
ip route add 192.168.1.0/24 via 192.168.7.253 table 7 #enable only LAN to have a route to access MGMT. Feel free to replace 192.168.1.0/24 with default, you have a firewall too.

我不知道这是否真的有必要,但文档中是这么说的……:

ip route add 192.168.7.0/24 dev eth1 src 192.168.7.100
ip route add 192.168.67.0/24 dev eth0 src 192.168.67.100

您的默认路线保持不变,这里再次采用ip route的语法:

ip route add default via 192.168.67.253

真正重要的部分是告诉使用正确的界面:

ip rule add from 192.168.67.100 table 67
ip rule add from 192.168.7.100 table 7

最后注意:确保 ubuntu 没有路由,否则被攻陷的 DMZ 主机可能会尝试通过 ubuntu 管理其他主机:

echo 0 > /proc/sys/net/ipv4/conf/default/forwarding
echo 0 > /proc/sys/net/ipv4/conf/all/forwarding

答案2

您的静态路由覆盖了默认网关。

当路由存在时,所有到 192.168.1.x 的流量都通过 eth1 离开,并使用 192.168.7.253 作为网关。

当路由不存在时,所有到 192.168.1.x 的流量都通过 eth0 离开,并使用 192.168.67.253 作为网关。

从您的 PC 到服务器的路径没有问题,但返回路径会采用不同的路由,具体取决于您 ping 的接口。这称为非对称路由,通常不被安全设备允许。它可能被防火墙阻止了。本质上,通过不同路由的返回流量是“不相关的”和无法识别的流量,因此会被丢弃。

我认为解决这个问题最简单的方法是确保流量根据接收数据的接口采用正确的路由返回。这可以通过在两个接口上设置默认网关来实现。

不幸的是,这并不像听起来那么简单。您需要创建备用路由表和路由规则。

看看这些文章是否有帮助:https://www.thomas-krenn.com/en/wiki/Two_Default_Gateways_on_One_System

https://askubuntu.com/questions/310355/networking-with-multiple-nics

相关内容