如何在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
相关产品推荐
相关产品推荐

