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
    • 最新
    • 标签
主页 / unix / 问题 / 701146
Accepted
MorRich
MorRich
Asked: 2022-05-03 07:22:22 +0800 CST2022-05-03 07:22:22 +0800 CST 2022-05-03 07:22:22 +0800 CST

UFW 伪装和外部流量仅在特定接口上

  • 772

我有一个 Ubuntu 系统(192.168.AB),它作为 Wireguard“服务器”运行,具有 2 个隧道,具有以下网络和 UFW 规则:

网络 10.255.200.0/24

ufw allow XXX/udp && ufw route allow in on wg200 out on any && ufw route allow in on wg200 out on eth0 && ufw route allow in on eth0 out on wg200

网络 10.255.245.0/24

ufw allow YYY/udp && ufw route allow in on wg245 out on wg245 to any from any && ufw route reject in on wg245 out on any to any from any

我已将以下内容添加到 /etc/ufw/before.rules 以允许 10.255.200.0/24 网络中的设备到达主机外部

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.255.200.0/24 -o eth0 -j MASQUERADE
COMMIT

这似乎可行,但现在我需要允许主机网络(192.168.A.0/24)中的其他主机能够访问 10.255.245.0/24 网络中的系统,而该网络默认情况下无法访问192.168.A.0/24。

我需要使用哪些 UFW 规则来保持主机网络安全并尽可能保持 WG 网络分离?另外,有没有更好的伪装方法?

提前致谢!

iptables ufw
  • 1 1 个回答
  • 540 Views

1 个回答

  • Voted
  1. Best Answer
    Justin Ludwig
    2022-05-10T15:56:06+08:002022-05-10T15:56:06+08:00

    在你的问题描述和你设置的 UFW 规则之间,在我看来你想让你的 WireGuard 服务器做这 4 件事?:

    1. 在其 wg200 网络上的任意两台主机之间转发连接。
    2. 伪装从其 wg200 网络上的任何主机到其 eth0 网络上的任何主机的连接。
    3. 在其 wg245 网络上的任意两台主机之间转发连接。
    4. 伪装从其 eth0 网络上的任何主机到其 wg245 网络上的任何主机的连接。

    如果这些是您想要允许的唯一 4 件事,那么这些是您需要的唯一 UFW 路由规则:

    ufw route allow in on wg200 out on wg200
    ufw route allow in on wg200 out on eth0
    ufw route allow in on wg245 out on wg245
    ufw route allow in on eth0 out on wg245
    

    另外,您需要向您的(如果您想伪装#4)添加第二MASQUERADE条规则:/etc/ufw/before.rules

    *nat
    :POSTROUTING ACCEPT [0:0]
    -A POSTROUTING -s 10.255.200.0/24 -o eth0 -j MASQUERADE
    -A POSTROUTING -s 192.168.A.0/24 -o wg245 -j MASQUERADE
    COMMIT
    

    请注意,UFW 会自动为您设置这两件事:

    1. UFW 使用连接跟踪来允许已在一个方向上转发的连接的目的地回复连接的初始源(因此您只需要为“转发”方向指定规则,而不是“反向”方向)。
    2. UFW 会阻止所有转发的连接,但您明确允许的连接除外(因此您无需拒绝未明确允许的连接)。

    所以要对你现有的路线规则挑剔:

    (1) ufw route allow in on wg200 out on any
    (2) ufw route allow in on wg200 out on eth0
    (3) ufw route allow in on eth0 out on wg200
    (4) ufw route allow in on wg245 out on wg245 to any from any
    (5) ufw route reject in on wg245 out on any to any from any
    
    • (1) & (2) 是多余的——如果有 (1) 则不需要 (2)——但 (1) 还允许 wg200 中的任何主机连接到 wg245 中的任何主机(不确定是否需要那?)
    • (3) 仅当您希望允许来自 eth0 网络的主机启动与 wg200 网络的新连接时才需要;如果您的 eth0 网络中的主机始终位于 wg200 网络连接的接收端(这可能是因为您从 wg200 伪装到 eth0),那么您不需要此规则
    • to any from any在 (4) 上不需要
    • (5) 不需要
    • 1

相关问题

  • 关于 MASQUERADE 和 SNAT/DNAT 的一点疑问

  • iptables 不过滤桥接流量

  • 持久的 iptables

  • Iptables 规则允许 appVM 通过配置为仅通过 QubesOS 中的 VPN 的 proxyVM

  • 如何在 Linux 中让所有流量通过一个接口

Sidebar

Stats

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

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve