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
    • 最新
    • 标签
主页 / server / 问题 / 1150149
Accepted
ron
ron
Asked: 2023-12-20 23:06:44 +0800 CST2023-12-20 23:06:44 +0800 CST 2023-12-20 23:06:44 +0800 CST

iptables 能否将物理wireguard UDP 连接与隧道TCP 会话关联起来?

  • 772

我正在锁定 Linux 机器的出口,使 OUTPUT 链默认拒绝。

我的wireguard 对等点来自子网10.1.0.0/16。本来我以为我可以-A OUTPUT -d 10.1.0.0/16 -j ACCEPT,虽然这是必要的,但它本身还不够。

通过跟踪确认,与wireguard 对等点的物理 UDP 连接也需要允许,再想一想,这是有道理的。

现在,我可以继续手动允许对等端点的wireguard 端口。但我想知道是否有一些更自动的机制,可以将物理 UDP 数据包与已经允许的隧道数据包相关联,并自动允许它?

iptables
  • 2 2 个回答
  • 47 Views

2 个回答

  • Voted
  1. Best Answer
    A.B
    2023-12-21T01:53:44+08:002023-12-21T01:53:44+08:00

    WireGuard 提供了使用iptables处理此问题的方法:通过在传出信封数据包上设置防火墙标记。这可以通过低级wg命令获得,因此也可以通过以下命令获得wg-quick:

    • FwMark —用于传出数据包的32 位 fwmark 。如果设置为 0 或“关闭”,则禁用此选项。可以通过在前面加上“0x”以十六进制指定。选修的。

    wg-quick提供了一个用于以下位置的示例PostUp:

    在最后一个示例的基础上,人们可以尝试所谓的“kill-switch”,以防止未加密的数据包流过非 WireGuard 接口,方法是将以下两行PostUp和PreDown几行添加到该[Interface]部分:

    PostUp = iptables -I OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT
    PreDown = iptables -D OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT
    

    对于这个问题的用例(由于使用默认的丢弃策略,因此具有相反的逻辑,并且不需要区分本地用例),配置文件中将类似于以下内容:

    [Interface]
    ...
    FwMark = 0xcafe # or any non-zero value
    ...
    
    PostUp = iptables -A OUTPUT ! -o %i -m mark --mark $(wg show %i fwmark) -j ACCEPT
    PreDown = iptables -D OUTPUT ! -o %i -m mark --mark $(wg show %i fwmark) -j ACCEPT
    

    或者可以将此规则添加到 WireGuard 的配置之外,可能直接使用 WireGuard 接口名称(例如:wg0)而不是%i在规则中使用防火墙标记值 0xcafe,而不是从 WireGuard 查询该值。

    如果对等方漫游,规则仍将能够跟踪其传出信封数据包。

    • 3
  2. symcbean
    2023-12-21T00:21:11+08:002023-12-21T00:21:11+08:00

    如果“物理 UDP”指的是到 VPN 隧道之外的对等点的流量,那么就不行。虽然在这种情况下可以通过 iptables 将不同端口上的流量关联到同一地址(端口敲门就是一个很好的例子),但隧道内部和外部的流量将流向不同的 IP 地址。

    • 0

相关问题

  • OpenVPN 的 Linux IP 转发 - 正确的防火墙设置?

  • iptables 单个规则中的多个源 IP

  • 存储 iptables 规则的规范方法是什么

  • 使用 iptables 和 dhcpd 进行端口转发

  • 根据 Apache 日志数据自动修改 iptables 以阻止行为不良的客户端

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve