跳至内容
Hshh's Cosmos
用户工具
登录
站点工具
搜索
工具
显示页面
修订记录
反向链接
最近更改
媒体管理器
网站地图
登录
>
最近更改
媒体管理器
网站地图
您在这里:
Hshh's Cosmos
»
freebsd
»
FreeBSD的策略路由
您的足迹:
freebsd:policy_based_routing
本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。
====== FreeBSD的策略路由 ====== FreeBSD的策略路由要比Linux的繁琐. 总的来说靠的是 FIB (routing table) 和 防火墙 (ipfw/pf) 包转发 以下只说实现方式, 不提原理 ===== FIB ===== ==== 启用多路由表 ==== 默认的kernel是只有1个fib. <del>sysctl的net.fibs只读选项, 所以如果要修改只能在/boot/loader.conf操作并且重启. <code>net.fibs="32"</code> 或者加在内核配置里面重新编译内核, 重启 <code>options ROUTETABLES=32</code> 以上的32代表启用32个FIB.</del> 现代系统 net.fibs 可以动态调整了. <code>sysctl net.fibs=32</code> ==== 设置路由表 ==== <code> /sbin/route add default 10.1.1.1 -fib 1 /sbin/route add -inet6 default 2001:abcd::1 -fib 1 </code> ==== 查询FIB ==== <code> netstat -rn -F 1 route -n get 8.8.8.8 -fib 1 </code> ==== 使用FIB ==== 让某程序使用路由表1 (fib 1) <code>setfib 1 /path/program</code> 让某个服务运行在路由表1上 <code> # /etc/rc.conf xxx_fib="1" </code> ===== 防火墙的包转发 ===== 防火墙的原理是 - 把某个源ip发出去的包重定向到指定的下一节点(默认会去默认网关了) - 把来自某个网卡的包, 再从这个网卡出去 ==== pf ==== <code> pass in quick on gre1 reply-to ( gre1 10.1.1.1 ) inet from any to gre1 pass out quick on $ext_if route-to ( gre1 10.1.1.1 ) inet from gre1 to any </code> 指定某些IP出口使用特定路由表 <code> pass inet from 192.168.101/24 to any rtable 1 </code> ==== ipfw ==== <code> ipfw add fwd 10.1.1.1 ip from 10.1.1.2 to any via $ext_if ipfw add setfib 1 ip from any to any via gre1 </code> 指定某些IP出口使用特定路由表 <code> ipfw add setfib 1 ip from 192.168.101/24 to any </code> {{tag>freebsd pbr}}
freebsd/policy_based_routing.txt
· 最后更改: 2023/07/17 17:35 由
Hshh
页面工具
显示页面
修订记录
反向链接
回到顶部