基于LINUX策略路由的实现

2023-11-07

一、网络结构
eth0 10.43.128.10  gw 10.43.0.254  -->internel
eth1 61.144.64.106 gw 61.144.64.1  -->internel
eth2 192.168.0.2   gw 192.168.0.1  -->internel

二、实现目的:
1.不改变现有网络拓扑结构。
2.根据目的地址确定数据走向,所有到10.45.0.0/16、10.10.0.0/16的走10.43.0.254。
3.根据源地址确定数据走向,10.43.128.63走adsl路由,其它走默认main路由。

三、软件要求:
IPROUTE
[root@ADSL root]# rpm -qa |grep iproute (查看是否有iproute软件包)
iproute-2.4.7-7.AS21.1

四、实现步骤:
[root@ADSL root]# ip link (查看本地链路)
1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,PROMISC,UP> mtu 1500 qdisc pfifo_fast qlen 100
link/ether 00:90:27:99:1d:fa brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100
link/ether 00:40:05:11:fe:78 brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100
link/ether 00:40:05:42:65:88 brd ff:ff:ff:ff:ff:ff
[root@ADSL root]# ip add (查看本地地址)
1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 brd 127.255.255.255 scope host lo
2: eth0: <BROADCAST,MULTICAST,PROMISC,UP> mtu 1500 qdisc pfifo_fast qlen 100
link/ether 00:90:27:99:1d:fa brd ff:ff:ff:ff:ff:ff
inet 10.43.128.10/16 brd 10.43.255.255 scope global eth0
3: eth1: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100
link/ether 00:40:05:11:fe:78 brd ff:ff:ff:ff:ff:ff
inet 61.144.64.106/24 brd 61.144.64.255 scope global eth1
4: eth2: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100
link/ether 00:40:05:42:65:88 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.2/24 brd 192.168.0.255 scope global eth2
[root@ADSL root]# ip route (查看本地路由和ip route ls table main 或route命令相等)
192.168.0.0/24 dev eth2 scope link
61.144.64.0/24 dev eth1 scope link
10.10.0.0/16 via 10.43.0.254 dev eth0
10.43.0.0/16 dev eth0 scope link
10.45.0.0/16 via 10.43.0.254 dev eth0
127.0.0.0/8 dev lo scope link
default via 61.144.64.1 dev eth1
[root@ADSL root]# ip rule (查看本地路由策略)
0: from all lookup local (本地路由表系统默认id=255,优先级0)
32766: from all lookup main (默认的标准路由表id=254,优先级32766)
32767: from all lookup default (本地默认路由表系统默认id=253,优先级32767)
[root@ADSL root]# echo "200 adsl" >>/etc/iproute2/rt_tables (添加一个新的路由表)
[root@ADSL root]# ip route add 10.10.0.0/16 via 10.43.0.254 dev eth0 table adsl
[root@ADSL root]# ip route add 10.45.0.0/16 via 10.43.0.254 dev eth0 table adsl
(为adsl路由表添加到HK AND QY的路由)
[root@ADSL root]# ip route add 10.10.0.0/16 via 10.43.0.254 dev eth0 table adsl
(为adsl路由表添加一条默认路由)
[root@ADSL root]# ip rule add from 10.43.128.63 table adsl pref 32765
(添加adsl路由表策略,这里添加10.43.128.63机器从adsl路由表走,而不是local,main,default表。设置adsl表优先级是32765,数值越小优先级别越高)
[root@ADSL root]# ip route ls table adsl (查看adsl表路由设置)
10.10.0.0/16 via 10.43.0.254 dev eth0
10.45.0.0/16 via 10.43.0.254 dev eth0
default via 192.168.0.1 dev eth2
[root@ADSL root]# ip rule (查看路由策略设置)
0: from all lookup local
32765: from 10.43.128.63 lookup adsl (新加id=200,优先级32765)
32766: from all lookup main
32767: from all lookup default
[root@ADSL root]# ip route flush cache (使新路由生效)
[root@ADSL root]# iptable -t nat -A POSTROUTING -s 10.43.128.63 -j SNAT –to 192.168.0.2 (让eth0 流向eth2)

五、验证:
C:/Documents and Settings/mis>tracert 10.10.0.14 (查看到hk的路由路径)
Tracing route to 10.10.0.14 over a maximum of 30 hops
1 <1 ms <1 ms <1 ms 10.43.128.10
2 1 ms <1 ms <1 ms 10.43.0.254
3 24 ms 12 ms 31 ms 10.255.0.170
4 31 ms 12 ms 10 ms 10.10.0.14
Trace complete.

C:/Documents and Settings/mis>tracert 10.45.0.254 (查看到qy的路由路径)
Tracing route to 10.45.0.254 over a maximum of 30 hops
1 <1 ms <1 ms <1 ms 10.43.128.10
2 1 ms 1 ms 1 ms 10.43.0.254
3 4 ms 4 ms 4 ms 10.45.0.254
Trace complete.

C:/Documents and Settings/mis>tracert www.163.com (测试外部路由路径)
Tracing route to www.cache.split.netease.com [220.181.28.42]
over a maximum of 30 hops:
1 <1 ms <1 ms <1 ms 10.43.128.10
2 1 ms 1 ms 1 ms 192.168.0.1
3 11 ms 9 ms 10 ms 61.144.65.1
4 9 ms 8 ms 9 ms 218.19.169.244
5 10 ms 14 ms 8 ms 61.144.0.57
6 11 ms 10 ms 10 ms 61.140.17.6
7 13 ms 10 ms 10 ms 202.97.25.5
8 9 ms 9 ms 9 ms 202.97.40.113
9 42 ms 41 ms 40 ms 202.97.34.117
10 40 ms 41 ms 40 ms 218.30.25.49
11 41 ms 41 ms 46 ms 218.30.25.74
12 45 ms 50 ms 55 ms 220.181.16.14
13 52 ms 50 ms 50 ms 220.181.17.58
14 41 ms 43 ms 41 ms 220.181.28.42
Trace complete.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于LINUX策略路由的实现 的相关文章

  • 从 Python 调用 PARI/GP

    我想打电话PARI GP http pari math u bordeaux fr dochtml gpman html仅从Python计算函数nextprime n 对于不同的n是我定义的 不幸的是我无法得到帕里蟒蛇 http code
  • 在哪里可以找到并安装 pygame 的依赖项?

    我对 Linux 比较陌生 正在尝试安装 python 的 pygame 开发环境 当我运行 setup py 时 它说我需要安装以下依赖项 我找到并安装了其中之一 SDL 然而 其他人则更加难以捉摸 Hunting dependencie
  • 使用 sed 更新 xml 属性(Windows + cygwin 和 Linux)?

    我需要使用 sed 命令对 xml 文件进行更新 但我在这方面遇到了麻烦 它需要在 Windows 使用 cygwin 和 Linux 上运行 XML 具有以下元素
  • 添加要在给定命令中运行的 .env 变量

    我有一个 env 文件 其中包含如下变量 HELLO world SOMETHING nothing 前几天我发现了这个很棒的脚本 它将这些变量放入当前会话中 所以当我运行这样的东西时 cat env grep v xargs node t
  • 两种情况或 if 哪个更快? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我必须制作一个 非常 轻的脚本 它将接受用户的选项并调用脚本中的函数来执行一些任务 现在我可以使用 IF 和 CASE 选项 但我想知道两
  • CentOS:无法安装 Chromium 浏览器

    我正在尝试在 centOS 6 i 中安装 chromium 以 root 用户身份运行以下命令 cd etc yum repos d wget http repos fedorapeople org repos spot chromium
  • 如何在apache 2.4.6上安装apxs模块

    我刚刚用过apt get update我的 apache 已更新为2 4 6 我想安装 apxs 来编译模块 但收到此错误 The following packages have unmet dependencies apache2 pre
  • jpegtran 优化而不更改文件名

    我需要优化一些图像 但不更改它们的名称 jpegtran copy none optimize image jpg gt image jpg 但是 这似乎创建了 0 的文件大小 当我对不同的文件名执行此操作时 大小仍然完全相同 怎么样 jp
  • C语言中如何通过内存地址映射函数名和行号?

    如何用 GCC 中的内存地址映射回函数名称和行号 即假设一个 C 语言原型 void func Get the address of caller maybe this could be avoided MemoryAddress get
  • 将 jar 作为 Linux 服务运行 - init.d 脚本在启动应用程序时卡住

    我目前正在致力于在 Linux VM 上实现一个可运行的 jar 作为后台服务 我已经使用了找到的例子here https gist github com shirish4you 5089019作为工作的基础 并将 start 方法修改为
  • docker容器大小远大于实际大小

    我正在尝试从中构建图像debian latest 构建后 报告的图像虚拟大小来自docker images命令为 1 917 GB 我登录查看尺寸 du sh 大小为 573 MB 我很确定这么大的尺寸通常是不可能的 这里发生了什么 如何获
  • 查找哪些页面不再与写入时复制共享

    假设我在 Linux 中有一个进程 我从中fork 另一个相同的过程 后forking 因为原始进程将开始写入内存 Linux写时复制机制将为进程提供与分叉进程使用的不同的唯一物理内存页 在执行的某个时刻 我如何知道原始进程的哪些页面已被写
  • 是否可以创建一个脚本来保存和恢复权限?

    我正在使用 Linux 系统 需要对一组嵌套文件和目录进行一些权限实验 我想知道是否没有某种方法可以保存文件和目录的权限 而不保存文件本身 换句话说 我想保存权限 编辑一些文件 调整一些权限 然后将权限恢复到目录结构中 将更改的文件保留在适
  • MySQL 中的创建/写入权限

    我的设备遇到一些权限问题SELECT INTO OUTFILE陈述 当我登录数据库并执行简单的导出命令时 例如 mysql gt select from XYZ into outfile home mropa Photos Desktop
  • 按进程名称过滤并记录 CPU 使用情况

    Linux 下有选项吗顶部命令 https www man7 org linux man pages man1 top 1 html我可以在哪里按名称过滤进程并将每秒该进程的 CPU 使用情况写入日志文件 top pgrep 过滤输出top
  • 如何减去两个 gettimeofday 实例?

    我想减去两个 gettimeofday 实例 并以毫秒为单位给出答案 这个想法是 static struct timeval tv gettimeofday tv NULL static struct timeval tv2 gettime
  • 在两次之间每分钟执行一次 Cronjob

    我需要在 crontab 中每分钟运行一个 bash 脚本8 45am and 9 50am每天的 Code 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 8 home pull sh gt ho
  • 进程退出后 POSIX 名称信号量不会释放

    我正在尝试使用 POSIX 命名信号量进行跨进程同步 我注意到进程死亡或退出后 信号量仍然被系统打开 在进程 打开它 死亡或退出后是否有办法使其关闭 释放 早期的讨论在这里 当将信号量递减至零的进程崩溃时 如何恢复信号量 https sta
  • 如果在等待“read -s”时中断,在子进程中运行 bash 会破坏 tty 的标准输出吗?

    正如 Bakuriu 在评论中指出的那样 这基本上与BASH 输入期间按 Ctrl C 会中断当前终端 https stackoverflow com questions 31808863 bash ctrlc during input b
  • 确定我可以向文件句柄写入多少内容;将数据从一个 FH 复制到另一个 FH

    如何确定是否可以将给定数量的字节写入文件句柄 实际上是套接字 或者 如何 取消读取 我从其他文件句柄读取的数据 我想要类似的东西 n how much can I write w handle n read r handle buf n a

随机推荐

  • 任天堂xci文件提取romfs

    最近需要宝可梦剑盾中的各种宝可梦 NPC 场景模型和UI资源 音乐资源等等 准备工作 1 宝可梦剑 xci 从任天堂switch破解机导出或者网络上下载 2 准备解压和提取工具Unpack zip 下载地址 How to easy extr
  • ElasticSearch高可用安装部署(Linux)

    ElasticSearch高可用安装部署 一 小型的ElasticSearch集群的节点角色规划 对于Ingest节点 如果我们没有格式转换 类型转换等需求 直接设置为false 3 5个节点属于轻量级集群 要保证主节点个数满足 节点数 2
  • log4j2 安装interactsh

    漏洞测试log4j2 sudo apt install gccgo go sudo apt install golang go go env w GOPROXY https goproxy cn direct 1 root kali hom
  • jwt安全问题

    文章目录 jwt安全问题 jwt简介 jwt组成 header payload signature 潜在漏洞 空加密算法 web346 密钥爆破 web348 敏感信息泄露 web349 修改算法RS256为HS256 web350 jwt
  • pytorch cycleGAN代码学习1

    一 新的东西 p s 很多架构都和之前一样 就举些不同的 1 ReplayBuffer Buffers of previously generated samples fake A buffer ReplayBuffer fake B bu
  • JSONException异常

    下面是net sf json JSONException java lang reflect InvocationTargetException异常 net sf json JSONException java lang reflect I
  • 筛选图片,写JSON文件和复制

    筛选图片 写JSON文件和复制 筛选图片 写JSON文件 筛选图片复制 筛选图片 写JSON文件 coding utf 8 from PIL import Image ImageDraw ImageFont import os import
  • NVIDIA Video Codec SDK学习

    这是sdk官网 https developer nvidia com nvidia video codec sdk https docs nvidia com video technologies video codec sdk 这是cud
  • python用于计算和数据处理的包有哪些_数据处理常用Python包

    原博文 2020 05 16 21 07 数据计算 numpy https github com AI 10 Data processing blob master E6 95 B0 E6 8D AE E5 88 86 E6 9E 90 E
  • Django---------创建、运行

    目录 1 安装django 2 pycharm 专业版 创建项目 3 默认项目的文件介绍 4 App的创建和说明 5 启动运行django 1 确保app已注册 settings py 2 编写URL和视图函数对应关系 url py 3 编
  • File类的常用方法

    import java io File import java io IOException public class Demo public static void main String args File file new File
  • xfce4汉化

    xfce4 设置中文 安装locales并配置 sudo apt install locales sudo dpkg reconfigure locales 选择语言编码en US UTF8 zh CN GB2312 zh CN GBK G
  • netty实现websocket发送文本和二进制数据

    最近在学习netty相关的知识 看到netty可以实现 websoket 因此记录一下在netty中实现websocket的步骤 主要实现传递文本消息和传递二进制消息 此处只考虑是图片 如果是别的消息可以考虑使用自定义协议 需求 1 使用
  • centos7最小化安装之后配置网络(ip)

    1 执行命令cd etc sysconfig network scripts 2 找到ifcfg eno16777736类似的文件 3 vi ifcfg eno16777736 4 将ONBOOT no 改为 ONBOOT yes 5 重启
  • 将jar包安装到本地仓库

    首先要安装maven 配置环境变量 百度 so easy 然后打开终端 执行以下命令 注意 红色对用红色 黄色对应黄色 绿色对应绿色 mvn install install file DgroupId cn vicky reddwarf D
  • B站数据分析岗实习生面试记录

    step1 自我介绍一下 还是需要准备以下的 不然一下子介绍自己的话 没话说 而且介绍自己不完全 step2 一道sql的笔试题目 建议刷一下题目呀 一定要刷题 掌握那些最基本的语法 step3 面试题目1 比如对B站近30天的弹幕发送量进
  • Office project 2021安装

    哈喽 大家好 今天一起学习的是project 2021的安装 Microsoft Office project项目管理工具软件 凝集了许多成熟的项目管理现代理论和方法 可以帮助项目管理者实现时间 资源 成本计划 控制 有兴趣的小伙伴也可以来
  • VALSE 文档图像智能报告整理

    目录 引言 端到端检测识别 探索检测和识别的协同作用 减少对标注的依赖 去除一些不必要的组件 文字擦除和编辑 文字辅助场景理解 视频文字擦除和文档矫正 文字识别 自监督预训练 对比学习 更高效的语言模型 手写数学公式识别 文档图像理解 视频
  • java创建数据库连接和对数据库操作的主要步骤

    Java创建数据库连接和对数据库操作的主要五个步骤如下 1 加载数据库驱动 使用 Class forName 方法加载指定的数据库驱动类 例如加载MySQL的驱动类 Class forName com mysql jdbc Driver 2
  • 基于LINUX策略路由的实现

    一 网络结构eth0 10 43 128 10 gw 10 43 0 254 gt interneleth1 61 144 64 106 gw 61 144 64 1 gt interneleth2 192 168 0 2 gw 192 1