ssssss
如果你要求在使用 macvlan 配置多个 IP 和 MAC 地址时,要求 ARP 响应的 MAC 地址与 IP 地址一一对应,可以考虑使用不同的 macvlan 接口来实现。
首先,创建多个 macvlan 接口,并为每个接口分配对应的 IP 地址和 MAC 地址。例如,创建两个接口 macvlan1
和 macvlan2
:
ip link add link eth0 macvlan1 type macvlan mode bridge
ip addr add 192.168.1.100/24 dev macvlan1
ip link set dev macvlan1 address 00:11:22:33:44:55
ip link add link eth0 macvlan2 type macvlan mode bridge
ip addr add 192.168.1.200/24 dev macvlan2
ip link set dev macvlan2 address 00:11:22:33:44:66
这里假设你的基础网络设备是 eth0
,你可以根据实际情况修改。
接下来,需要配置每个接口的 ARP 响应行为,使其与相应的 IP 地址一一对应。可以使用 ip
命令的 neigh
子命令来实现:
ip neigh add 192.168.1.100 dev macvlan1 lladdr 00:11:22:33:44:55 nud permanent
ip neigh add 192.168.1.200 dev macvlan2 lladdr 00:11:22:33:44:66 nud permanent
这样配置之后,当有 ARP 请求发送到相应的 IP 地址时,会使用对应的 MAC 地址进行响应。
需要注意的是,每个 macvlan 接口必须使用不同的 IP 地址和 MAC 地址,并且你需要根据实际需要配置相应的路由规则和防火墙策略来确保流量可以正确地转发。
希望这能帮助你解决问题!如果还有其他疑问,请随时提问。
IPV4的源地址路由配置:
1. 打开Linux路由功能
echo 1 > /proc/sys/net/ipv4/ip_forward
2.添加路由表,自定义的路由表应介于0到252。
ip route add 172.25.2.0/24 via 192.168.1.5 table 100
ip route add default via 192.168.1.5 table 100
172.25.2.0/24 表示发往的网段
default 默认路由
via表示192.168.1.5表示网关
3.关联一个规则到路由表
ip rule add from 192.168.1.2 table 100
from表示源IP为192.168.1.2的包,查询路由表100.
4.刷新路由缓存
ip route flush cache
Linux路由表是一个内核数据结构,用来描述Linux主机与其它网络设备之间的路径,以及如何将数据包从源地址路由到目标地址。Linux路由表的主要组成部分包括目的网络、下一跳、子网掩码和接口等信息。
Destination:表示可以到达的目标ID,0.0.0.0/0表示所有未知网络,又称默认路由,优先级最低。
Genmask:目标网络对应的netmask
Iface:到达对应网络,应该从当前主机哪个网卡发送出去。
Gateway:到达非直连的网络,将数据发送到临近路由器的临近本机的接口的IP地址,如果是直连网络,Gateway是0.0.0.0
Metric:开销cost;值越小,路由记录的优先级越高。
route
route -n
netstat -nt
ss -nt
链路层
ip link
网络层
ip address
ip address add 2.2.2.2/24 dev eth2 label eth2:1
路由
ip route
1、实践例子
1、查看一个命令属于哪个软件包
rpm -qf `which route`
net-tools-2.0-0.52.20160912git.an8.x86_64
rpm -qf `which ip`
iproute-5.15.0-4.an8.x86_64
=====================================================
2、删除一个默认网关
2.1、route语法:route del -net 目标网络地址 netmask 子网掩码 gw 网关地址
例如,要删除目标网络地址为192.168.1.0/24的路由表项,可以使用以下命令:
route del -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.0.1
2.1、ip route语法:ip route del 目标网络地址/子网掩码 via 网关地址
例如,要删除目标网络地址为192.168.2.0/24的路由表项,可以使用以下命令:
ip route del 192.168.2.0/24 via 192.168.0.1
route del default gw 192.168.168.1
ip route del default via 192.168.168.1 dev ens160 proto static metric 100
3、添加一个默认网关
3.1、route语法:route add -net 目标网络地址 netmask 子网掩码 gw 网关地址
例如,要将目标网络地址为192.168.1.0/24的数据包通过网关地址为192.168.0.1的网关进行转发,可以使用以下命令:
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.0.1
3.2、ip route语法:ip route add 目标网络地址/子网掩码 via 网关地址
例如,要将目标网络地址为192.168.2.0/24的数据包通过网关地址为192.168.0.1的网关进行转发,可以使用以下命令:
ip route add 192.168.2.0/24 via 192.168.0.1
ip route add default via 192.168.168.1 dev ens160 proto static metric 100
route add -net 192.168.10.0 netmask 255.255.255.0 dev ens160
去往192.168.10.0/24网段的路由通过ens160网卡出去
4、显示当前路由表信息
route -n -e
ip route list
ip route
5、添加一个缺省路由
route add default gw 192.168.0.1
2、route 命令常用格式
[root@localhost ~]# route --help
Usage: route [-nNvee] [-FC] [<AF>] List kernel routing tables
route [-v] [-FC] {add|del|flush} ... Modify routing table for AF.
route {-h|--help} [<AF>] Detailed usage syntax for specified AF.
route {-V|--version} Display version/author and exit.
-v, --verbose be verbose
-n, --numeric don't resolve names
-e, --extend display other/more information
-F, --fib display Forwarding Information Base (default)
-C, --cache display routing cache instead of FIB
<AF>=Use -4, -6, '-A <af>' or '--<af>'; default: inet
List of possible address families (which support routing):
inet (DARPA Internet) inet6 (IPv6) ax25 (AMPR AX.25)
netrom (AMPR NET/ROM) ipx (Novell IPX) ddp (Appletalk DDP)
x25 (CCITT X.25)
add/del 添加/删除 路由
-A 设置地址类型(默认ipv4 配置ipv6地址时:-A inet6)
-net 到一个网段的路由(到目的网段)
-host 到一个主机的路由(到目的主机)
gw 设置默认网关
dev 去此目的地址的出接口
metric 设置路由跳数
3、ip route 命令常用格式
[root@localhost ~]# ip route help
Usage: ip route { list | flush } SELECTOR
ip route save SELECTOR
ip route restore
ip route showdump
ip route get [ ROUTE_GET_FLAGS ] ADDRESS
[ from ADDRESS iif STRING ]
[ oif STRING ] [ tos TOS ]
[ mark NUMBER ] [ vrf NAME ]
[ uid NUMBER ] [ ipproto PROTOCOL ]
[ sport NUMBER ] [ dport NUMBER ]
ip route { add | del | change | append | replace } ROUTE
SELECTOR := [ root PREFIX ] [ match PREFIX ] [ exact PREFIX ]
[ table TABLE_ID ] [ vrf NAME ] [ proto RTPROTO ]
[ type TYPE ] [ scope SCOPE ]
ROUTE := NODE_SPEC [ INFO_SPEC ]
NODE_SPEC := [ TYPE ] PREFIX [ tos TOS ]
[ table TABLE_ID ] [ proto RTPROTO ]
[ scope SCOPE ] [ metric METRIC ]
[ ttl-propagate { enabled | disabled } ]
INFO_SPEC := { NH | nhid ID } OPTIONS FLAGS [ nexthop NH ]...
NH := [ encap ENCAPTYPE ENCAPHDR ] [ via [ FAMILY ] ADDRESS ]
[ dev STRING ] [ weight NUMBER ] NHFLAGS
FAMILY := [ inet | inet6 | mpls | bridge | link ]
OPTIONS := FLAGS [ mtu NUMBER ] [ advmss NUMBER ] [ as [ to ] ADDRESS ]
[ rtt TIME ] [ rttvar TIME ] [ reordering NUMBER ]
[ window NUMBER ] [ cwnd NUMBER ] [ initcwnd NUMBER ]
[ ssthresh NUMBER ] [ realms REALM ] [ src ADDRESS ]
[ rto_min TIME ] [ hoplimit NUMBER ] [ initrwnd NUMBER ]
[ features FEATURES ] [ quickack BOOL ] [ congctl NAME ]
[ pref PREF ] [ expires TIME ] [ fastopen_no_cookie BOOL ]
TYPE := { unicast | local | broadcast | multicast | throw |
unreachable | prohibit | blackhole | nat }
TABLE_ID := [ local | main | default | all | NUMBER ]
SCOPE := [ host | link | global | NUMBER ]
NHFLAGS := [ onlink | pervasive ]
RTPROTO := [ kernel | boot | static | NUMBER ]
PREF := [ low | medium | high ]
TIME := NUMBER[s|ms]
BOOL := [1|0]
FEATURES := ecn
ENCAPTYPE := [ mpls | ip | ip6 | seg6 | seg6local | rpl | ioam6 ]
ENCAPHDR := [ MPLSLABEL | SEG6HDR | SEG6LOCAL | IOAM6HDR ]
SEG6HDR := [ mode SEGMODE ] segs ADDR1,ADDRi,ADDRn [hmac HMACKEYID] [cleanup]
SEGMODE := [ encap | inline ]
SEG6LOCAL := action ACTION [ OPTIONS ] [ count ]
ACTION := { End | End.X | End.T | End.DX2 | End.DX6 | End.DX4 |
End.DT6 | End.DT4 | End.DT46 | End.B6 | End.B6.Encaps |
End.BM | End.S | End.AS | End.AM | End.BPF }
OPTIONS := OPTION [ OPTIONS ]
OPTION := { srh SEG6HDR | nh4 ADDR | nh6 ADDR | iif DEV | oif DEV |
table TABLEID | vrftable TABLEID | endpoint PROGNAME }
IOAM6HDR := trace prealloc type IOAM6_TRACE_TYPE ns IOAM6_NAMESPACE size IOAM6_TRACE_SIZE
ROUTE_GET_FLAGS := [ fibmatch ]
3、说明
一、Linux路由表
Linux路由表是一个内核数据结构,用来描述Linux主机与其它网络设备之间的路径,以及如何将数据包从源地址路由到目标地址。Linux路由表的主要组成部分包括:目的网络、下一跳、子网掩码和接口等信息。
(一)目的网络 目的网络是一个或多个的IP地址段,用来指示要路由到的网络。Linux路由表中可以有多个目的网络,并且每一个目的网络都有一个与之对应的路由。
(二)下一跳 下一跳表示数据包要经过的下一个路由器的地址。如果目的地址是一个局域网地址,下一跳将指向一个与目的局域网相连的路由器,以便将数据包转发到目的主机。
(三)子网掩码 子网掩码是一个32位二进制数,用于将IP地址分为网络地址和主机地址两部分。子网掩码的作用是帮助路由器区分网络地址和主机地址,以便进行路由选择和数据包路由。
(四)接口 接口是一个用于连接Linux主机和网络的物理设备或虚拟设备。每个接口都有一个唯一的标识符,用于标识该接口。在Linux路由表中,每个路由都与一个接口相关联,以便将数据包从源地址发送到目标地址。
二、Linux路由表的配置
在Linux中,可以使用route命令配置路由表。route命令用于显示、添加、删除、修改Linux路由表中的路由信息。
(一)显示路由表 要显示Linux路由表中的路由信息,可以使用“route”命令。例如,要显示系统中的所有路由信息,可以输入以下命令:
route
输出结果会显示每个目的网络的路由信息,包括目的地址、网关、接口和路由类型等信息。此外,还可以使用“netstat -r”命令来显示Linux路由表中的路由信息。
(二)添加路由 要添加一个路由,可以使用“route add”命令。例如,要将数据包路由到目的地址为192.168.1.0/24的网络,网关为192.168.0.1,可以输入以下命令:
route add -net 192.168.1.0/24 gw 192.168.0.1
其中,“-net”选项表示目标网络,“gw”表示网关地址。要添加的路由将被添加到Linux路由表中,并在下次系统启动时自动加载。
(三)删除路由 要删除一个路由,可以使用“route del”命令。例如,要删除Linux路由表中的一条路由,可以输入以下命令:
route del -net 192.168.1.0/24
此命令将修改Linux路由表中指定的路由信息。
三、Linux路由表的优先级
Linux路由表中的每个路由都有一个优先级。优先级用于决定数据包应去往哪个网关。当有两个或多个路由指向同一个目的网络时,可以使用优先级来确定数据包应走哪个路由。每个路由的优先级是由它的度量值决定的,度量值越小,优先级越高。
在Linux中,可以使用metric选项设置路由的度量值。例如,要将路由的度量值设置为100,可以输入以下命令:
route add -net 192.168.1.0/24 gw 192.168.0.1 metric 100
Linux路由表还可以使用源地址和目标地址的匹配规则来设置路由的优先级。例如,要将数据包从地址为192.168.0.2的主机路由到目的地址为192.168.1.0/24的网络,可以使用“ip rule”命令添加一条规则,如下所示:文章来源:https://www.toymoban.com/news/detail-791875.html
ip rule add from 192.168.0.2 to 192.168.1.0/24 pref 2000 lookup 1
其中,“pref 2000”表示优先级,值越大,优先级越低。文章来源地址https://www.toymoban.com/news/detail-791875.html
到了这里,关于Linux中路由route和ip route的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!