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 / 问题 / 722232
Accepted
gertvdijk
gertvdijk
Asked: 2022-10-25 06:28:29 +0800 CST2022-10-25 06:28:29 +0800 CST 2022-10-25 06:28:29 +0800 CST

FreeBSD:PF/pf.conf 接口之间的转发规则

  • 772

我想在 FreeBSD 12.3 上设置一个简单的转发规则(不是端口转发!),它根据接收接口和外出接口进行过滤。IP 网络不应成为规则的一部分,因为它就像所有类型 IP 的路由器一样。路由网络将由路由守护程序(带有 OSPF 的 BIRD)动态设置。

在使用 PF 的 FreeBSD 中,我只能按照man 5 pf.confifspec为每个过滤规则 ( [ "on" ifspec ])设置一个:

     pf-rule        = action [ ( "in" | "out" ) ]
              [ "log" [ "(" logopts ")"] ] [ "quick" ]
              [ "on" ifspec ] [ route ] [ af ] [ protospec ]
              hosts [ filteropt-list ]

我希望输入接口和输出接口的组合匹配。我怎样才能做到这一点?


在使用nft/nftables 的 Linux 中,我会这样做:

define iface_site2site = { "tun0", "tun1", "tun9" }
[...]
  chain forward {
    type filter hook forward priority 0;
    policy drop;

    iifname $iface_site2site oifname $iface_site2site accept \
      comment "Freely forward packets between site-to-site links, firewalled at final destination."
  }
[...]

在 Linux 中使用iptables我会这样做:

iptables -A [...] --in-interface tun+ --out-interface tun+ -j ACCEPT

如何在 FreeBSD 上进行上述操作?

只是要清楚; 我不是在寻找端口转发或 NAT 规则。

freebsd
  • 1 1 个回答
  • 49 Views

1 个回答

  • Voted
  1. Best Answer
    gertvdijk
    2022-11-02T03:03:43+08:002022-11-02T03:03:43+08:00

    在 FreeBSD 上的单一规则中似乎不可能做到这一点。因此,我们可以使用一条match规则来标记这些接口上的入站流量,然后使用两条pass规则,一条 forin和一条 for out,然后只允许流量在被标记为这样的情况下流出。

    根据 FreeBSD 12.3 上的 man pf.conf(5) :

    tag <string>
          Packets matching this rule will be tagged with the specified
          string.  The tag acts as an internal marker that can be used to
          identify these packets later on.  This can be used, for example, to
          provide trust between interfaces and to determine if packets have
          been processed by translation rules.  Tags are "sticky", meaning
          that the packet will be tagged even if the rule is not the last
          matching rule. [...]
    

    它很好地提到了问题的用例(“在接口之间提供信任”)。?

    FreeBSD 的tags 类似于markLinux 的 netfilter 中的 s。

    例子:

    site_to_site_links = "{" tun0 tun1 tun9 "}"
    
    [...]
    
    block log all
    
    # Allow forwarding freely between the site-to-site interfaces
    # (not to self); traffic firewalled at final destination.
    match in on $site_to_site_links from any to any tag S2S no state
    pass in quick on $site_to_site_links to ! self no state
    pass out quick on $site_to_site_links tagged S2S no state
    

    请注意,流量也需要passed in,除非它的目的地是它自己,否则我们可能会绕过其他传入的防火墙规则。

    附加调试提示:启用pflog(pflog_enable="YES"在 中设置rc.conf)并用于tcpdump -e -n -i pflog0查看被阻止的内容。该-e选项显示匹配哪个规则以导致数据包被阻止。

    • 0

相关问题

  • FreeBSD w/ 两个网络接口和不同的域

  • Freebsd 11.1 问题与 gnu m4 eval 测试失败

  • Freebsd setfacl

  • ps -vxa 不对内存进行排序

  • FreeBSD 的 sh:列出函数

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