Linux默认情况下会丢掉不属于本机IP的数据包。将net.ipv4.ip_forward
设置为1后,会开启路由功能,Linux会像路由器一样对不属于本机的IP数据包进行路由转发。
路由的基本流程为: 收到数据包之后,解析出目的IP,判断是否是本机IP。如果是本机IP,则交由上层传输层处理。如果不是本机IP,则通过查找路由表找到合适的网络接口将IP数据包转发出去。
Linux上通过路由规则和路由表配合来实现路由流程, 处理逻辑如下:
- 按路由规则优先级, 根据规则匹配条件找到需要匹配的路由表
- 根据路由表中条目进行匹配的结果进行转发
- 若路由表中没有匹配到满足的路由条目,则处理下一路由规则