linux网络路由管理之一(onlink、多ip场景如何确定出网ip地址)

A、多ip场景如何确定出网ip地址

# 当有多个IP地址,可以使用下面的命令查看主动到某个地址,默认使用那个IP。
  ip route get 目标ip地址
  [root@aliyun ~]# ip route get 1.1.1.1
  1.1.1.1 via 172.31.127.253 dev eth0 src 172.31.112.253 uid 0 
      cache

# 查看使用指定ip 12.82.22.32访问外部地址9.9.9.9,的路由信息
[root@localhost ~]# ip route get 9.9.9.9 from 12.82.22.32
9.9.9.9 from 12.82.22.32 via 12.82.22.1 dev eno1
    cache

B、什么是onlink route(onlink的工作原理)

  • onlink的解释:假装下一跳地址是直连在某某指定接口上,让内核强制使用该地址作为网关(直白说:直接可达)
  • 众所周知,当服务器配置ip为 192.168.10.2/24 时,必须指定其网关在 192.168.10.0/24网段范围内的可配置ip(即192.168.10.1~192.168.10.254)
  • 假设ip配置为192.168.10.2/24,onlink的网关设置为192.168.20.1
  • 假如linux要将数据路由到onlink所指定的网关192.168.20.1上,那么linux内核会先在网卡ip为192.168.10.2/24所在lan网络发送一个arp请求,询问“who-has 192.168.20.1”,这是您配置的“onlink”网关。当它收到响应时,他有一个MAC 地址,他可以将数据包发送到该地址并执行路由。

onlink的常见应用场景

简单说就是:服务器ip网段,不在您真实网关所在的网段。(但是需要你在网关除伪造或者配置一个包含服务器地址的网段地址)
    1、普通例子:服务器ip 192.168.10.2/24        网关是:192.168.20.1
    2、极端例子:服务器ip 192.168.10.2/32        网关是:192.168.20.1

onlink应用时的约束+案例展示


(提醒:非必要不要使用onlink技术,一般使用onlink都是在网络规划混乱,ip划分不合理时才救急的,当然若是你有自己的规划,就是奔着这个去的,那就没问题)
(救急使用:可以实现节省ip的目的)

1、onlink 网关ip 192.168.20.1,必须真实配置在 服务器 192.168.10.2 物理 和 逻辑(即直连+同属于一个vlan) 上直接连接的交换机vlanif上面
2、该vlanif 上还必须配置一个 包含 服务器ip 192.168.10.2 所在网络的ip(不管在互联网能不能通,只需要,vlanif上必须有一个包含 192.168.10.2/24 的广播域)

#交换机配置案例
interface Vlan100
  no shutdown
  no ip redirects
  ip address 192.168.20.1/24
  ip address 192.168.9.1/22 secondary   # 关键就在这里,同一个vlanif100下面,这个ip所在广播域一定要包含真实服务器 

#服务器配置展示
[root@C20230614366413 ~]# ip a show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether fa:a2:e0:00:00:23 brd ff:ff:ff:ff:ff:ff
    altname enp0s17
    altname ens17
    inet 192.168.10.2/32 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::f8a2:e0ff:fe00:23/64 scope link 
       valid_lft forever preferred_lft forever

[root@C20230614366413 ~]# ip route
default via 192.168.20.1 dev eth0 proto static metric 100 
default via 192.168.20.1 dev eth0 proto static metric 100 onlink 
192.168.20.1 dev eth0 proto static scope link metric 100 

[root@C20230614366413 ~]# ping baidu.com
PING baidu.com (110.242.68.66) 56(84) bytes of data.
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=1 ttl=50 time=41.5 ms
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=2 ttl=50 time=42.0 ms

常见linux如何配置onlink

Linux-RHEL|Rocky系列

1、网卡文件要直接把网关写成onlink的ip
2、添加一个路由文件,内容和文件名如下(注意必须要指定出接口dev)
    echo "default via 192.168.20.1 dev eth0 onlink" > /etc/sysconfig/network-scripts/route-eth0

# 当然你要手动用命令加也是可以的(这条命令尾部,你要是不加onlink,会有如下报错)
    # Error: Nexthop has invalid gateway.
    ip route add default dev eth0 via 192.168.20.1 onlink

SUSE、OpenSUSE的配置文件不支持onlink配置

Linux-Debian系列

没有特殊配置,只需要把网关你期望的onlink网关 写在 /etc/network/interfaces

Linux-Ubuntu16系列

没有特殊配置,只需要把网关你期望的onlink网关 写在 /etc/network/interfaces ,直接就是onlink了

Linux-Ubuntu22系列

# netplan的yaml文件内容,大致如下
        eth0:
            addresses: ['10.15.10.46/24']
            routes:
            - to: 0.0.0.0/0
              via: 10.15.11.1
              on-link: true     # 加了这个

Linux-Arch-ipv4

# 网卡配置文件大致内容如下
        [Match]
        Name=eth0

        [Network]
        Address=xxx.xxx.xxx.xxx/[mask]
        DNS=1.1.1.1,8.8.8.8

        [Route]
        Gateway=10.0.0.1
        GatewayOnLink=true

Windows 压根不用管,直接配置就可以

声明:本文为原创,作者为 辣条①号,转载时请保留本声明及附带文章链接:https://boke.wsfnk.com/archives/1152.html
谢谢你请我吃辣条谢谢你请我吃辣条

如果文章对你有帮助,欢迎点击上方按钮打赏作者

最后编辑于:2023/7/4作者: 辣条①号

现在在做什么? 接下来打算做什么? 你的目标什么? 期限还有多少? 进度如何? 不负遇见,不谈亏欠!

暂无评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

arrow grin ! ? cool roll eek evil razz mrgreen smile oops lol mad twisted wink idea cry shock neutral sad ???

文章目录