文章目录
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 压根不用管,直接配置就可以
如果文章对你有帮助,欢迎点击上方按钮打赏作者
暂无评论