• Linux 路由 静态路由


    Linux 路由 静态路由

    注意:本文中使用;隔开的命令等价

    一、临时生效,使用命令route

    A、添加到主机的路由

    route add -host IP dev eth0            # 默认Gateway指向0.0.0.0  Flags: UH
    route add -host IP gw GWIP [dev eth0]  # 指定Gateway指向的IP Flags: UGH
    
    route add -host 192.168.1.100 dev eth0
    route add -host 192.168.1.1 gw 10.0.0.100
    

    B、添加到网络的路由

    route add -net IP netmask MASK eth0 ; route add -net IP/24 eth0
    route add -net IP netmask MASK gw IP ; route add -net IP/24 gw IP
    
    route add -net 192.168.1.0/24 dev eth0        # 默认Gateway指向0.0.0.0  Flags: U
    route add -net 192.168.1.0/24 gw 10.0.0.100   # 指定Gateway指向的IP Flags: UG
    

    C、添加默认路由

    route add default gw 10.0.0.10 ;
    route add -net 0.0.0.0 gw 10.0.0.10 ;
    route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.0.0.10
    

    D、删除路由

    route del -host 192.168.1.100
    route del -net 192.168.1.0/24
    route del default gw 10.0.0.10 ; route del -net 0.0.0.0 gw 10.0.0.10
    

    E、查看所有路由信息

    [root@centos7 ~]# route -n  # -n 显示数字地址,而不是尝试确定符号主机名
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         10.0.0.2        0.0.0.0         UG    0      0        0 eth0
    10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
    169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
    

    二、临时生效,使用命令ip route

    A、添加路由,和route比较

    ip route add 192.168.1.100 dev eth0 ; route add -host 192.168.1.100 dev eth0
    
    ip route add 192.168.1.1 via 10.0.0.100 ; route add -host 192.168.1.1 gw 10.0.0.100
    
    ip route add 192.168.1.0/24 dev eth0 ; route add -net 192.168.1.0/24 dev eth0
    
    ip route add 192.168.1.0/24 via 10.0.0.100 ; 
    route add -net 192.168.1.0/24 gw 10.0.0.100
    
    ip route add default via 10.0.0.10 ; route add default gw 10.0.0.10 ;
    ip route add 0.0.0.0 via 10.0.0.10 ; route add -net 0.0.0.0 gw 10.0.0.10 ;
    

    B、改变路由,路由必须已存在

    ip route chg 192.168.1.1 dev eth0
    ip route chg 192.168.1.1 via 10.0.0.110
    ip route chg 192.168.1.0/24 dev eth0
    ip route chg 192.168.1.0/24 via 10.0.0.100
    ip route chg default dev eth0
    ip route chg default via 10.0.0.10
    ip route chg 0.0.0.0 dev eth0
    ip route chg 0.0.0.0 via 10.0.0.10
    

    C、替换路由,路由不存在则添加

    ip route replace 192.168.1.1 dev eth0
    ip route replace 192.168.1.1 via 10.0.0.110
    ip route replace 192.168.1.0/24 dev eth0
    ip route replace 192.168.1.0/24 via 10.0.0.100
    ip route replace default dev eth0
    ip route replace default via 10.0.0.10
    ip route replace 0.0.0.0 dev eth0
    ip route replace 0.0.0.0 via 10.0.0.10
    

    D、删除路由

    ip route del 192.168.1.1
    ip route del 192.168.1.0/24
    ip route del default
    ip route del 0.0.0.0
    

    E、清空路由

    ip route flush 192.168.1.1
    ip route flush 192.168.1.0/24
    ip route flush cache           # 清除所有路由cache
    ip route flush dev eth0        # 清空网卡的所有路由, 慎用!!
    

    F、查看路由表

    ip route show查看到的路由信息方便存入配置文件中

    [root@centos7 ~]# ip route  # 查看main路由表
    default via 10.0.0.2 dev eth0 
    10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.202 
    169.254.0.0/16 dev eth0 scope link metric 1002
    
    ip route ; ip route ls table main ; ip route ls table 254  # 查看指定路由表
    

    G、查看单个路由

    ip route show命令只是显示现有的路由,而ip route get命令在必要时会派生出新的路由

    ip route get 10.0.0.2  # 获得单个路由
    

    H、缩写

    route、r
    show、sh、s、list、lst、ls、l
    add、a
    change、chg、c
    replace、repl、r
    delete、del、d
    flush、f
    table、t
    get、g
    

    三、永久生效,写入配置文件/etc/sysconfig/network-scripts/route-ethX

    其中ethX是网卡名称,内容为添加路由的格式:

    [root@centos7 ~]# cat /etc/sysconfig/network-scripts/route-eth0
    default via 10.0.0.10
    192.168.1.0/24 via 10.0.0.100
    192.168.1.100 dev eth0
    192.168.1.1 via 10.0.0.100
    

    四、故障报错

    执行route add提示SIOCADDRT: Network is unreachable

    添加静态路由规则的时候,需要保证gateway(gw)的IP和eth0(本机IP)在同一个网段内。

    实验:实现三个路由器与两个主机互通(单臂静态路由)

    拓扑图:

    ![img](Linux 路由 静态路由.assets/1769223-20200419121106862-1092428675.png)

    路由表配置图:

    实现原理:R1配置路由器,是A访问B的过程,A主机和R1路由器1接口为直连,然后从R1本机的2接口出去,在R1上添加相邻路由器R2的3接口Ip地址作为网关,同理,在R1上添加R2路由器3接口(IP地址作为网关)和B主机(172.18.0.0)的网段。

    R2路由器同理,左侧出去的是3接口,在R2上添加相邻的R1路由器接口IP地址(2接口)就是网关,从右侧出去(4接口),在R2上添加R3路由器的5接口IP地址作为网关。

    R3路由器同理,B主机与R3路由器的6接口直连,不需要网关,R3出去的5接口与10.100.0.0在同一个网段,不需要网关,R3的5接口出去,在R3上添加相邻的R2路由器4接口Ip地址作为网关;再将192.168.34.0网段添加网关(即为R2路由器4接口的IP地址),出口为R3的5接口。

    ![img](Linux 路由 静态路由.assets/1769223-20200419120959385-1666153048.png)

    在A主机上配置IP地址和网关:

    将主机A的网络与路由器R1的1接口在同一个物理网络上:

    cat` `/etc/sysconfig/network-scripts/ifcfg-eth0` `DEVICE=eth0``BOOTPROTO=static``IPADDR=192.168.34.100``GATEWAY=192.168.34.200``PREFIX=24``DNS1=114.114.114.114
    

    配置R1路由器

    R1的1接口与A主机在一个物理网段

    cat` `/etc/sysconfig/network-scripts/ifcfg-eth0` `DEVICE=eth0``BOOTPROTO=static``IPADDR=192.168.34.200 ``# IP地址改为A主机的网关地址``PREFIX=24``DNS1=114.114.114.114
    

    配置R1的2接口IP地址,2接口和A主机不在一个物理网段,但是路由器工作在内核中,只要有一个接口可以通,另外的一个跨网段的接口也可以通。

    cat` `/etc/sysconfig/network-scripts/ifcfg-eth1` `DEVICE=eth1``BOOTPROTO=static``IPADDR=10.0.0.1``PREFIX=8``DNS1=114.114.114.114
    

    配置R2路由器

    R2的3接口路由器要与R1的2接口路由器在同一个网段

    cat` `/etc/sysconfig/network-scripts/ifcfg-eth0` `DEVICE=eth0``BOOTPROTO=static``IPADDR=10.0.0.1``PREFIX=8``DNS1=114.114.114.114
    

    配置R2的4接口路由器

    cat` `/etc/sysconfig/network-scripts/ifcfg-eth0` `DEVICE=eth0``BOOTPROTO=static``IPADDR=10.100.0.100``PREFIX=16``DNS1=114.114.114.114
    

    配置R3路由器

    配置R3的5接口,要与R2的4接口在一个网段

    cat` `/etc/sysconfig/network-scripts/ifcfg-eth0` `DEVICE=eth0``BOOTPROTO=static``IPADDR=10.100.0.200``PREFIX=16``DNS1=114.114.114.114  
    

    配置R3的6接口,IP地址为B主机的网关地址

    cat` `/etc/sysconfig/network-scripts/ifcfg-eth1` `DEVICE=eth1``BOOTPROTO=static``IPADDR=172.18.0.200``# IP地址改为B主机的网关地址``PREFIX=16``DNS1=114.114.114.114
    

    配置B主机IP和网关

    cat` `/etc/sysconfig/network-scripts/ifcfg-eth0` `DEVICE=eth0``BOOTPROTO=static``IPADDR=172.18.0.100``GATEWAY=172.18.0.200``PREFIX=16``DNS1=114.114.114.114
    

    在R1路由器上添加路由规则

    # route add -net 10.100.0.0/16 gw 10.0.0.2``# route add -net 172.18.0.0/16 gw 10.0.0.2
    

    在R2路由器上添加路由规则

    # route add -net 192.168.34.0/24 gw 10.0.0.1``# route add -net 172.18.0.0/16 gw 10.100.0.200
    

    在R3路由器上添加路由规则

    # route add -net 10.0.0.0/8 gw 10.100.0.100``# route add -net 192.168.34.0/24 gw 10.100.0.100
    

    在R1/R2/R3路由器上开启路由功能

    # vim /etc/sysctl.conf   # 修改到配置文件中``net.ipv4.ip_forward=1` `# sysctl -p # 使路由配置生效
    

    测试效果:

    可以看到,此时A主机可以访问到B主机,B主机也可以访问A主机。

  • 相关阅读:
    使用 PowerShell 进行 SQL Server 数据库备份
    当 Windows 10 应用商店更新游戏/应用遇到 0x80070032 错误时的一种解决方案
    在 SQL Server 恢复一个已存在的数据库的备份(即通过备份功能复制一个新数据库)
    在 Windows Server 2008 R2 中安装 PowerShell 5.1 与中文脚本错误解决
    vite项目使用 vitepluginmock 插件 mock数据,fetch报错SyntaxError: Unexpected token < in JSON at position 0
    MAC和移动端实现charles和代理软件共存【100%生效】
    eslint遇到的报错
    swiper.js轮播在iOS下禁用上拉下拉回弹问题解决
    js图片监听onload事件,依然有获取不到宽高的场景
    15分钟快速配置eslint,prettier,lintstaged,husky,commitizen实现前端项目代码规范化
  • 原文地址:https://www.cnblogs.com/backups/p/linux_static_route.html
Copyright © 2020-2023  润新知