ip rule ,ip tables ,ip route 的过程

这篇具有很好参考价值的文章主要介绍了ip rule ,ip tables ,ip route 的过程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 

ip tables 和 ip route 是两个不同的工具,它们在不同的阶段执行不同的功能。ip route 是用来管理和控制路由表的,它决定了数据包应该从哪个网卡或网关发送出去。ip tables 是用来配置、管理和控制网络数据包的过滤、转发和转换的,它根据用户定义的规则对数据包进行检查、修改或丢弃。

一般来说,ip route 先于 ip tables 执行,因为路由表是在内核中最先处理数据包的部分。当内核收到一个数据包时,它会先查看路由表,找到合适的出口网卡或网关,然后将数据包发送出去。在发送之前,内核会根据 ip tables 中的规则对数据包进行过滤、转发或转换。例如,内核可能会根据 NAT 规则更改数据包中的源地址或目标地址,或者根据 filter 规则接受或丢弃数据包。

当然,这只是一个简化的描述,实际上 ip tables 和 ip route 之间还有一些交互和顺序的细节。例如,ip tables 中有一些链可以在路由之前或之后对数据包进行处理,如 prerouting 和 postrouting 链。如果你想了解更多关于 ip tables 和 ip route 的工作原理和执行顺序,你可以参考以下链接:

  • Linux iptables详解 - CSDN博客
  • Linux 网络数据包处理流程 - 知乎

问:哪ip route 有在ip tables 之后执行的吗? 

一般来说,ip route 是在 ip tables 之前执行的,因为路由表是在内核中最先处理数据包的部分。但是,有一种情况下,ip route 可能会在 ip tables 之后执行,那就是当 ip tables 中有一条规则使用了 MARK 目标时。

MARK 目标是一种特殊的目标,它可以给数据包打上一个标记,这个标记可以被路由策略或其他 iptables 规则所识别。当内核在 iptables 中遇到一个 MARK 目标时,它会将数据包的标记字段设置为指定的值,然后将数据包重新送回路由表进行第二次路由。这样,就可以根据数据包的标记来选择不同的路由策略或出口网卡。

例如,假设我们有两个网卡 eth0 和 eth1,分别连接到两个不同的网络。我们想让所有来自 192.168.1.0/24 网络的数据包都走 eth0 网卡,而其他数据包都走 eth1 网卡。我们可以使用以下命令来实现这个需求:

创建一个名为 mark 的自定义链

iptables -t mangle -N mark

在 PREROUTING 链中跳转到 mark 链

iptables -t mangle -A PREROUTING -j mark

在 mark 链中给来自 192.168.1.0/24 的数据包打上 1 的标记

iptables -t mangle -A mark -s 192.168.1.0/24 -j MARK --set-mark 1

在 mark 链中给其他数据包打上 2 的标记

iptables -t mangle -A mark -j MARK --set-mark 2

创建两个路由表 table1 和 table2

echo “201 table1” >> /etc/iproute2/rt_tables echo “202 table2” >> /etc/iproute2/rt_tables

在 table1 中添加默认路由为 eth0

ip route add default dev eth0 table table1

在 table2 中添加默认路由为 eth1

ip route add default dev eth1 table table2

添加两条路由策略,根据标记选择路由表

ip rule add fwmark 1 table table1 ip rule add fwmark 2 table table2

这样,当内核收到一个数据包时,它会先查看路由表,找到合适的出口网卡或网关,然后将数据包发送到 iptables 的 mangle 表的 PREROUTING 链。在这里,内核会根据数据包的源地址给它打上一个标记,然后将数据包重新送回路由表进行第二次路由。这次,内核会根据数据包的标记选择不同的路由策略和出口网卡,从而实现了按源地址分流的效果。

如果你想了解更多关于 MARK 目标和路由策略的知识,你可以参考以下链接:

  • Linux iptables详解 - CSDN博客
  • Linux iptables中mangle表和MARK目标的使用方法_布鲁格若门的博客-CSDN博客
  • Linux 路由表详解及 route 命令详解 - CSDN博客
  • 掌握Linux路由这一篇就够了! - 知乎 - 知乎专栏

那ip rule ,ip tables ,ip route 的顺序是什么呢? 讲讲过程 

 

ip rule,ip tables,ip route 的顺序是这样的:

  • 当内核收到一个数据包时,它会先查看 ip rule 中的路由策略,根据数据包的特征(如源地址、目标地址、标记等)选择一个路由表。
  • 然后,内核会在选定的路由表中查找匹配的路由条目,根据数据包的目标地址选择一个出口网卡或网关。
  • 接着,内核会将数据包发送到 iptables 的 mangle 表和 nat 表的 prerouting 链,根据用户定义的规则对数据包进行修改或转换(如更改 IP 头、执行 DNAT 等)。
  • 然后,内核会根据修改后的数据包重新查看 ip rule 和 ip route,选择一个新的出口网卡或网关。
  • 接着,内核会将数据包发送到 iptables 的 filter 表的 forward 链,根据用户定义的规则对数据包进行过滤或转发(如接受、丢弃、拒绝等)。
  • 然后,内核会将数据包发送到 iptables 的 mangle 表和 nat 表的 postrouting 链,根据用户定义的规则对数据包进行修改或转换(如更改源地址、执行 SNAT 等)。
  • 最后,内核会将数据包发送出去。

这是一个简化的描述,实际上 iptables 和 ip rule 之间还有一些交互和顺序的细节。如果你想了解更多关于 iptables 和 ip rule 的工作原理和执行顺序,你可以参考以下链接:文章来源地址https://www.toymoban.com/news/detail-502111.html

  • Linux iptables详解 - CSDN博客
  • Linux 网络数据包处理流程 - 知乎

到了这里,关于ip rule ,ip tables ,ip route 的过程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Clickhouse: One table to rule them all!

    前面几篇笔记我们讨论了存储海量行情数据的个人技术方案。它们之所以被称之为个人方案,并不是因为性能弱,而是指在这些方案中,数据都存储在本地,也只适合单机查询。 数据源很贵 – 在这个冬天,我们已经听说,某些上了规模的机构,也在让员工共享万得账号了。

    2024年01月19日
    浏览(29)
  • ip route 和 route 命令

    ip route 属于 iproute2 工具包;route 属于  net-tools 工具包;目前 ip route 使用较为广泛;  两个工具包的介绍请见 “iproute2 和 net-tools 介绍” 文章。         ip route命令 用于管理静态路由表。         linux 系统中,可以自定义从 1-252个路由表。         路由表和表明

    2024年02月05日
    浏览(42)
  • Linux中路由route和ip route

    如果你要求在使用 macvlan 配置多个 IP 和 MAC 地址时,要求 ARP 响应的 MAC 地址与 IP 地址一一对应,可以考虑使用不同的 macvlan 接口来实现。 首先,创建多个 macvlan 接口,并为每个接口分配对应的 IP 地址和 MAC 地址。例如,创建两个接口 macvlan1 和 macvlan2 : 这里假设你的基础网

    2024年01月15日
    浏览(44)
  • vue3中,form表单校验之特殊字符校验、手机号、身份证号、百分制数字 & route和router的写法 & setup的两种用法 & rules中校验之blur和change

    vue3中,form表单校验之特殊字符校验、手机号、身份证号、百分制数字 route和router的写法 setup的两种用法 rules中校验之blur和change 1、写法一 index.vue 2、写法二完整版 index.vue 2、校验文件 srcutilsvalidate.ts

    2024年02月05日
    浏览(42)
  • ip route get ip地址 应用案例

        在做虚拟化实验用的虚拟机和实际的ECS云主机一般都会有多个网卡,网络的联通性是经常碰到的问题。比如在一个VM上有3个网卡,分别为ens160(和寄主机进行桥接的网卡10.0.0.128)、ens224(连接仅主机网络10.0.0.0/24的网卡10.0.0.128)和docker0(容器化平台的虚拟网卡)。当我想知道

    2024年02月10日
    浏览(23)
  • ip route 路由命令详解

    (523条消息) ip route 命令详解_thj_blog的博客-CSDN博客_ip route命令详解 Linux如何查看网关地址 - study_goup - 博客园 (cnblogs.com) 添加路由192.20.30.0/24网段走eth0网卡 ip route add 192.20.30.0/24 dev eth0 table local Linux下ip route、ip rule、iptables的关系(转) - EasonJim - 博客园 (cnblogs.com) (608条消息) i

    2023年04月09日
    浏览(60)
  • Linux ip route命令

    ip route是Linux系统中的一个非常常用的命令,它用于配置和管理Linux的路由表。通过ip route命令,管理员可以查看、添加、删除或修改Linux系统的路由表,从而决定数据包如何在网络中传输。例如,当一台Linux机器需要连接外网或者内网的其他主机时,它需要知道如何到达目的地

    2024年02月22日
    浏览(43)
  • route、ip route添加删除路由表命令,路由表永久化设置

    学习linux笔记小实践一 route 与 ip route的使用 route 与 ip route www.baidu.com 14.119.104.189 add ps:gw、via指自己的网关地址 del default 在/etc/sysconfig/network-scripts/route-ens33配置文件中添加语句 或 以下方法: 1)在/etc/rc.local里添加 方法: route add -net 192.168.3.0/24 dev eth0 route add -net 192.168.2.0/2

    2024年02月04日
    浏览(48)
  • linux: ip rule 用法详解

    我们不仅要根据目的地地址,还要根据其他数据包字段(源地址、IP 协议、传输协议端口甚至数据包有效负载)来不同地路由数据包。此任务称为 策略路由 。Linux 策略路由是一种基于策略的路由机制,相对于传统的基于目的地址的路由机制,它可以提供更灵活和强大的路由

    2024年02月02日
    浏览(40)
  • Linux系统中查看路由表的命令(ip route)

    以下命令是在Linux系统中查看路由表的命令: 在Linux系统中,有多种方法可以查看路由设置。以下是一些常用的命令: ip route 或 ip -4 route (IPv4)/ ip -6 route (IPv6) : 这是最常用且功能强大的命令,用于查看和操作路由表。 若要仅查看IPv4或IPv6的路由,可以使用以下命令:

    2024年02月03日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包