You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在FreeBSD中配置双网卡(re0、em0)实现分流量路由及pf管控

FreeBSD双网卡路由与PF管控配置方案

刚好之前折腾过类似的双网卡场景,给你一步步捋清楚怎么实现,满足re0走默认互联网流量、em0用于特定网段PF管控的需求。

当前状态参考配置

先贴一下当前的ifconfig输出(模拟你现在的DHCP状态):

re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=8209b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC,LINKSTATE>
        ether aa:bb:cc:dd:ee:ff
        inet 192.168.178.20 netmask 0xffffff00 broadcast 192.168.178.255
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=8209b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC,LINKSTATE>
        ether 11:22:33:44:55:66
        inet 192.168.178.21 netmask 0xffffff00 broadcast 192.168.178.255
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active

对应的/etc/rc.conf配置(DHCP自动获取):

# 当前DHCP模式的rc.conf
ifconfig_re0="DHCP"
ifconfig_em0="DHCP"
defaultrouter="NO"  # DHCP会自动给你加上默认路由

目标配置实现

接下来修改配置,让re0承担默认互联网网关,em0专门处理192.168.178.0/24网段的流量并由PF管控。

1. 持久化配置(修改rc.conf)

编辑/etc/rc.conf,替换成下面的内容——这里给em0设置静态IP避免DHCP冲突,同时手动指定默认路由:

# re0保持DHCP,自动获取路由器分配的IP
ifconfig_re0="DHCP"
# em0设置静态IP,和路由器同网段,不自动获取默认路由
ifconfig_em0="inet 192.168.178.22 netmask 255.255.255.0"
# 手动指定默认网关为FritzBox的IP,所有互联网流量走re0
defaultrouter="192.168.178.1"
# 启用PF防火墙
pf_enable="YES"
pf_rules="/etc/pf.conf"
# 如果需要通过em0转发内部流量,开启路由转发
gateway_enable="YES"

2. 临时生效(无需重启系统)

如果不想马上重启,可以直接在命令行执行这些命令来临时生效:

# 给em0设置静态IP,先停掉DHCP
ifconfig em0 inet 192.168.178.22 netmask 255.255.255.0
# 删除DHCP自动添加的重复默认路由(如果有的话)
route delete default 192.168.178.1
# 重新添加默认路由,确保走re0
route add default 192.168.178.1
# 确保192.168.178.0/24网段的路由指向em0(通常自动生成,没生成的话手动加)
route add 192.168.178.0/24 192.168.178.22

3. PF规则示例(管控em0流量)

编辑/etc/pf.conf,添加针对em0的管控规则,比如只允许内部网段访问特定服务:

# 定义接口别名,方便后续维护
ext_if="re0"  # 互联网出口
int_if="em0"  # 内部管控接口

# 默认拒绝所有流量,只放行需要的
block all

# 允许re0的所有出站互联网流量
pass out on $ext_if all

# 允许em0接口上,内部网段访问本机SSH服务
pass in on $int_if from 192.168.178.0/24 to any port ssh

# 允许em0出站到内部网段的所有流量
pass out on $int_if to 192.168.178.0/24 all

配置完后重启PF生效:service pf restart

这样配置后,所有对外的互联网流量都会默认走re0,而针对192.168.178.0/24网段的流量会通过em0,并且你可以根据需要在PF里添加更细粒度的管控规则。

内容的提问来源于stack exchange,提问作者IchSchreiGleich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:50:34