AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1670816
Accepted
divB
divB
Asked: 2021-08-22 21:12:48 +0800 CST2021-08-22 21:12:48 +0800 CST 2021-08-22 21:12:48 +0800 CST

/29 网络的数据包过滤器(防火墙)

  • 772

我的 ISP 路由 /29 网络(8 个 IP 地址)。第一个和最后一个当然是网络和广播地址,第二个是由 ISP 分配给调制解调器的。调制解调器有一个带有 /29 网络的以太网 LAN 端口,我可以使用它。不幸的是,我无法访问或更换调制解调器,只有 ISP 可以访问它。在此讨论中,它需要被视为黑匣子。我的端点是提供 /29 网络的调制解调器的 LAN 连接。

当然,我可以将剩下的 5 个 IP 地址分配给不同的机器,并通过以太网端口将它们连接到调制解调器。这就是我现在正在做的事情。

但是,我想在两者之间有一个数据包过滤器(防火墙)。通常防火墙需要两个接口和两个子网。从技术上讲,我可以将 /29 分成两个 /30 网络,并将防火墙放在它们之间。

另一种选择是将所有五个静态 IP 分配给防火墙并进行 NAT 和端口转发。

第三种选择是让所有 L2 流量通过我的防火墙,将其配置为网桥并使用基本的 L2 过滤。

这些选项中没有一个对我有吸引力。

有没有一种无需NAT 或 L2 过滤即可在我的 IP 网络前面放置防火墙的好方法?

networking ip
  • 2 2 个回答
  • 66 Views

2 个回答

  • Voted
  1. Best Answer
    user1686
    2021-08-23T00:27:54+08:002021-08-23T00:27:54+08:00

    理想情况下,整个 /29 将位于防火墙的“内部”接口上,防火墙本身将使用完全独立的 /31(或 /30)连接,并且 ISP 将通过您的防火墙路由主 /29。 . 值得尝试致电您的 ISP 并询问他们是否可以进行那种“点对点”配置。

    如果这不可能,请在防火墙上使用代理 ARP来伪造它。只要它回答路由器的 ARP 查询,它就会接收这些 IP 地址的流量,即使它们实际上并未在防火墙上配置。

    这适用于基于 Linux 的防火墙(一般的想法应该适用于例如 OpenBSD),但不能保证设备:

    1. 像往常一样使用 /29 中的地址配置防火墙的“内部”接口。

      ip addr add 193.256.181.193/26 dev int0
      
    2. 使用相同的地址配置防火墙的“外部”接口,但将其设为 /32。

      在 Linux 上,您可以使用“点对点”寻址方式,将调制解调器的地址指定为“对等点”。

      ip addr add 193.256.181.193 peer 193.256.181.254/32 dev ext0
      

      如果这不可能,请使用常规 /32 并单独为调制解调器地址添加“本地”路由。

      ip addr add 193.256.181.193/32 dev ext0
      ip route add 193.256.181.254/32 dev ext0
      
    3. 像往常一样添加默认路由。

      ip route add default via 193.256.181.254 dev ext0
      
    4. 在“外部”接口上启用代理 ARP。在 Linux 上,您可以使用内核实现(通过 启用sysctl)或用户空间守护程序(“parpd”)。

      因为内核内的实现让我无所适从,所以使用起来parpd更简单(也因为在我的情况下,我需要配置整个子网代理的异常,parpd 可以做到,但内核不能),所以这里有一个 /etc/ parpd.conf:

      interface ext0
          # Make the ISP router think the entire subnet is still on-link
          proxy 193.256.181.192/26
          # But don't answer for the ISP router's own address
          ignore 193.256.181.254
      

      您还可以为“内部”接口启用 ARP 代理,以便静态配置的 LAN 主机可以简单地继续将 ISP 路由器的地址作为其“默认网关”,而无需立即在任何地方更改它:

      interface int0
          # Make the LAN hosts think the ISP router is still on-link
          proxy 193.256.181.254
      

      Linux 上的内核内代理 ARP 实现可以在sysctl net.ipv4.conf.ext0.proxy_arp[_pvlan]以及ip neigh add .. proxy. (经过几次尝试,我仍然不完全知道后者是否需要启用 sysctl 或者它们是否是正交的。)

      请注意,在这种情况下,“代理”并不意味着中继请求(尽管这也是可能的);相反,防火墙本身将代表代理地址进行回答。

    5. 就是这样,现在只需将防火墙视为标准路由器并编写您的 iptables 规则。

    这种机制的优势(与例如 NAT 或 ebtables brouting 1相比)是,除了看起来有点奇怪的“外部”接口之外,您的防火墙继续作为一个完全标准的第 3 层路由器工作 - 代理 ARP 不会改变任何方式的 IP 数据包,几乎可以达到与 ISP 简单地通过防火墙路由 /29 相同的结果。

    (同样的方法也适用于使用代理 NDP 的 IPv6,但希望您不需要它,并且可以让 ISP 正确路由它,例如通过 DHCPv6-PD?)


    请注意,即使在您将 /29 拆分为两个 /30 的初始计划中,仍需要代理 ARP,因为 ISP 的路由器将完全不知道拆分 - 它会继续为整个 /29 发出 ARP 查询。

    如果答案是您可以致电 ISP 并要求他们调整路由,以便可以使用两个 /30... 那么您也可以要求他们首先将整个 /29 路由到您的防火墙(在这种情况下,他们将为调制解调器-防火墙链接分配一个专用的点对点 /30)。


    1 Linux 软件网桥支持一项功能,其中某些数据包可以提升到 L3 处理(路由/iptables),而其他数据包继续由 L2 网桥转发。这由一些防火墙设备使用,例如 Untangle。这太可怕了,我希望我再也不会看到它在网络上使用了。

    • 2
  2. dirkt
    2021-08-23T00:20:25+08:002021-08-23T00:20:25+08:00

    通常防火墙需要两个接口和两个子网。

    防火墙也会根据需要进行 NAT,这意味着只有“外部”子网是您的 /29,而“内部”子网是私有地址范围,可以任意大(例如10.0.0.0/8)。

    这可以是“静态”NAT,因此您可以拥有 5 个内部 IP 并将它们一对一映射到您的 5 个外部 IP。或者任何你喜欢的东西。

    因此,在您的情况下使用 NAT 确实没有缺点。NAT 不限于“将整个内部子网映射到单个 IP 地址”,这是在家庭路由器上默认完成的。

    有没有一种无需 NAT 或 L2 过滤即可在我的 IP 网络前面放置防火墙的好方法?

    我的意思是,你要么留在 L2,然后需要 L2 过滤,要么转到 L3,然后你需要路由,因此需要 NAT。所以这将是一个或另一个。

    为内部防火墙机器浪费外部 IP 地址并不是对 IP 地址等昂贵资源的良好利用,只是因为您“不喜欢 NAT”(或者无论您的原因是什么)。

    • 0

相关问题

  • 用户使用 FileZilla 连接到 SFTP 服务器拒绝连接

  • 是否可以在客户端中使用没有文件系统的 FTP?

  • NAT 后面的 NAT 如何工作(路由器的 NAT 和 ISP 的 NAT)?

  • Win10 1803:如何让移动热点成为专用网络?

  • nc如何识别服务名称

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve