IP转发操作系统拥有 IP转发(英語:IP forwarding)功能,意味着该系统能接收从接口传送进来的 网络数据包(英語:network packets),如果识别到该数据包不用于该系统自身,那么系统将会将该网络数据包传送到另外一个网络去,用恰当地方式转发该数据包。[1] 一个典型的场景是需要去搭建一个路由器以连接两个不同网络。 路由表当一个IP数据包抵达系统后,系统将根据该数据包的目的地址来决定是否转发该数据包,以及转发到何处。路由表提供了目的地址和转发目标(下一跳)之间的对应关系。
在大多数操作系统上可用 由于默认情况下系统仅通过IP数据包的目的地址来决定转发方式,对于一些路由器配置场景来说,仅配置路由表存在局限。此时应额外采用策略路由来更灵活地配置路由规则。 启用/禁用IP转发Linux可通过设置sysctl项 编辑 /etc/sysctl.conf 文件: nano /etc/sysctl.conf 添加该行内容 或 去除注释该行内容: net.ipv4.ip_forward=1 退出并保存,运行改行命令。 sysctl -p 上述方式,将会永久性地启动IP转发,并且立即生效。 BSD可通过设置sysctl项 要持久性启用IP转发,可将该sysctl设置加入 SolarisSolaris系统中启用或禁用IP转发的设置一般是针对各个接口的,可通过ifconfig命令来临时更改某个接口的转发设置。[3]例如要临时地在接口 ifconfig bge0 router 反之如要禁用转发: ifconfig bge0 -router 要持久地启用或禁用IPv4或IPv6转发,应使用ipadm(1M)命令。[4] 例如要更改全局转发设置,使用: ipadm set-prop -p forwarding={on|off} {ipv4|ipv6} 或者更改某个接口的转发设置,使用: ipadm set-ifprop -m {ipv4|ipv6} -p forwarding={on|off} <interface> 以启用bge0上的IPv4转发为例: ipadm set-ifprop -m ipv4 -p forwarding=on bge0 内容扩展可通过 英文维基的IP routing 进行内容扩展。 参考文献
|