ssssss
如果你要求在使用 macvlan 配置多個 IP 和 MAC 地址時,要求 ARP 響應(yīng)的 MAC 地址與 IP 地址一一對應(yīng),可以考慮使用不同的 macvlan 接口來實現(xiàn)。
首先,創(chuàng)建多個 macvlan 接口,并為每個接口分配對應(yīng)的 IP 地址和 MAC 地址。例如,創(chuàng)建兩個接口 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
這里假設(shè)你的基礎(chǔ)網(wǎng)絡(luò)設(shè)備是 eth0
,你可以根據(jù)實際情況修改。
接下來,需要配置每個接口的 ARP 響應(yīng)行為,使其與相應(yīng)的 IP 地址一一對應(yīng)??梢允褂?ip
命令的 neigh
子命令來實現(xiàn):
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
這樣配置之后,當(dāng)有 ARP 請求發(fā)送到相應(yīng)的 IP 地址時,會使用對應(yīng)的 MAC 地址進(jìn)行響應(yīng)。
需要注意的是,每個 macvlan 接口必須使用不同的 IP 地址和 MAC 地址,并且你需要根據(jù)實際需要配置相應(yīng)的路由規(guī)則和防火墻策略來確保流量可以正確地轉(zhuǎn)發(fā)。
希望這能幫助你解決問題!如果還有其他疑問,請隨時提問。
IPV4的源地址路由配置:
1. 打開Linux路由功能
echo 1 > /proc/sys/net/ipv4/ip_forward
2.添加路由表,自定義的路由表應(yīng)介于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 表示發(fā)往的網(wǎng)段
default 默認(rèn)路由
via表示192.168.1.5表示網(wǎng)關(guān)
3.關(guān)聯(lián)一個規(guī)則到路由表
ip rule add from 192.168.1.2 table 100
from表示源IP為192.168.1.2的包,查詢路由表100.
4.刷新路由緩存
ip route flush cache
Linux路由表是一個內(nèi)核數(shù)據(jù)結(jié)構(gòu),用來描述Linux主機(jī)與其它網(wǎng)絡(luò)設(shè)備之間的路徑,以及如何將數(shù)據(jù)包從源地址路由到目標(biāo)地址。Linux路由表的主要組成部分包括目的網(wǎng)絡(luò)、下一跳、子網(wǎng)掩碼和接口等信息。
Destination:表示可以到達(dá)的目標(biāo)ID,0.0.0.0/0表示所有未知網(wǎng)絡(luò),又稱默認(rèn)路由,優(yōu)先級最低。
Genmask:目標(biāo)網(wǎng)絡(luò)對應(yīng)的netmask
Iface:到達(dá)對應(yīng)網(wǎng)絡(luò),應(yīng)該從當(dāng)前主機(jī)哪個網(wǎng)卡發(fā)送出去。
Gateway:到達(dá)非直連的網(wǎng)絡(luò),將數(shù)據(jù)發(fā)送到臨近路由器的臨近本機(jī)的接口的IP地址,如果是直連網(wǎng)絡(luò),Gateway是0.0.0.0
Metric:開銷cost;值越小,路由記錄的優(yōu)先級越高。
route
route -n
netstat -nt
ss -nt
鏈路層
ip link
網(wǎng)絡(luò)層
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、刪除一個默認(rèn)網(wǎng)關(guān)
2.1、route語法:route del -net 目標(biāo)網(wǎng)絡(luò)地址 netmask 子網(wǎng)掩碼 gw 網(wǎng)關(guān)地址
例如,要刪除目標(biāo)網(wǎng)絡(luò)地址為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 目標(biāo)網(wǎng)絡(luò)地址/子網(wǎng)掩碼 via 網(wǎng)關(guān)地址
例如,要刪除目標(biāo)網(wǎng)絡(luò)地址為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、添加一個默認(rèn)網(wǎng)關(guān)
3.1、route語法:route add -net 目標(biāo)網(wǎng)絡(luò)地址 netmask 子網(wǎng)掩碼 gw 網(wǎng)關(guān)地址
例如,要將目標(biāo)網(wǎng)絡(luò)地址為192.168.1.0/24的數(shù)據(jù)包通過網(wǎng)關(guān)地址為192.168.0.1的網(wǎng)關(guān)進(jìn)行轉(zhuǎn)發(fā),可以使用以下命令:
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.0.1
3.2、ip route語法:ip route add 目標(biāo)網(wǎng)絡(luò)地址/子網(wǎng)掩碼 via 網(wǎng)關(guān)地址
例如,要將目標(biāo)網(wǎng)絡(luò)地址為192.168.2.0/24的數(shù)據(jù)包通過網(wǎng)關(guān)地址為192.168.0.1的網(wǎng)關(guān)進(jìn)行轉(zhuǎn)發(fā),可以使用以下命令:
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網(wǎng)段的路由通過ens160網(wǎng)卡出去
4、顯示當(dāng)前路由表信息
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 設(shè)置地址類型(默認(rèn)ipv4 配置ipv6地址時:-A inet6)
-net 到一個網(wǎng)段的路由(到目的網(wǎng)段)
-host 到一個主機(jī)的路由(到目的主機(jī))
gw 設(shè)置默認(rèn)網(wǎng)關(guān)
dev 去此目的地址的出接口
metric 設(shè)置路由跳數(shù)
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路由表是一個內(nèi)核數(shù)據(jù)結(jié)構(gòu),用來描述Linux主機(jī)與其它網(wǎng)絡(luò)設(shè)備之間的路徑,以及如何將數(shù)據(jù)包從源地址路由到目標(biāo)地址。Linux路由表的主要組成部分包括:目的網(wǎng)絡(luò)、下一跳、子網(wǎng)掩碼和接口等信息。
(一)目的網(wǎng)絡(luò) 目的網(wǎng)絡(luò)是一個或多個的IP地址段,用來指示要路由到的網(wǎng)絡(luò)。Linux路由表中可以有多個目的網(wǎng)絡(luò),并且每一個目的網(wǎng)絡(luò)都有一個與之對應(yīng)的路由。
(二)下一跳 下一跳表示數(shù)據(jù)包要經(jīng)過的下一個路由器的地址。如果目的地址是一個局域網(wǎng)地址,下一跳將指向一個與目的局域網(wǎng)相連的路由器,以便將數(shù)據(jù)包轉(zhuǎn)發(fā)到目的主機(jī)。
(三)子網(wǎng)掩碼 子網(wǎng)掩碼是一個32位二進(jìn)制數(shù),用于將IP地址分為網(wǎng)絡(luò)地址和主機(jī)地址兩部分。子網(wǎng)掩碼的作用是幫助路由器區(qū)分網(wǎng)絡(luò)地址和主機(jī)地址,以便進(jìn)行路由選擇和數(shù)據(jù)包路由。
(四)接口 接口是一個用于連接Linux主機(jī)和網(wǎng)絡(luò)的物理設(shè)備或虛擬設(shè)備。每個接口都有一個唯一的標(biāo)識符,用于標(biāo)識該接口。在Linux路由表中,每個路由都與一個接口相關(guān)聯(lián),以便將數(shù)據(jù)包從源地址發(fā)送到目標(biāo)地址。
二、Linux路由表的配置
在Linux中,可以使用route命令配置路由表。route命令用于顯示、添加、刪除、修改Linux路由表中的路由信息。
(一)顯示路由表 要顯示Linux路由表中的路由信息,可以使用“route”命令。例如,要顯示系統(tǒng)中的所有路由信息,可以輸入以下命令:
route
輸出結(jié)果會顯示每個目的網(wǎng)絡(luò)的路由信息,包括目的地址、網(wǎng)關(guān)、接口和路由類型等信息。此外,還可以使用“netstat -r”命令來顯示Linux路由表中的路由信息。
(二)添加路由 要添加一個路由,可以使用“route add”命令。例如,要將數(shù)據(jù)包路由到目的地址為192.168.1.0/24的網(wǎng)絡(luò),網(wǎng)關(guān)為192.168.0.1,可以輸入以下命令:
route add -net 192.168.1.0/24 gw 192.168.0.1
其中,“-net”選項表示目標(biāo)網(wǎng)絡(luò),“gw”表示網(wǎng)關(guān)地址。要添加的路由將被添加到Linux路由表中,并在下次系統(tǒng)啟動時自動加載。
(三)刪除路由 要刪除一個路由,可以使用“route del”命令。例如,要刪除Linux路由表中的一條路由,可以輸入以下命令:
route del -net 192.168.1.0/24
此命令將修改Linux路由表中指定的路由信息。
三、Linux路由表的優(yōu)先級
Linux路由表中的每個路由都有一個優(yōu)先級。優(yōu)先級用于決定數(shù)據(jù)包應(yīng)去往哪個網(wǎng)關(guān)。當(dāng)有兩個或多個路由指向同一個目的網(wǎng)絡(luò)時,可以使用優(yōu)先級來確定數(shù)據(jù)包應(yīng)走哪個路由。每個路由的優(yōu)先級是由它的度量值決定的,度量值越小,優(yōu)先級越高。
在Linux中,可以使用metric選項設(shè)置路由的度量值。例如,要將路由的度量值設(shè)置為100,可以輸入以下命令:
route add -net 192.168.1.0/24 gw 192.168.0.1 metric 100
Linux路由表還可以使用源地址和目標(biāo)地址的匹配規(guī)則來設(shè)置路由的優(yōu)先級。例如,要將數(shù)據(jù)包從地址為192.168.0.2的主機(jī)路由到目的地址為192.168.1.0/24的網(wǎng)絡(luò),可以使用“ip rule”命令添加一條規(guī)則,如下所示:文章來源:http://www.zghlxwxcb.cn/news/detail-791875.html
ip rule add from 192.168.0.2 to 192.168.1.0/24 pref 2000 lookup 1
其中,“pref 2000”表示優(yōu)先級,值越大,優(yōu)先級越低。文章來源地址http://www.zghlxwxcb.cn/news/detail-791875.html
到了這里,關(guān)于Linux中路由route和ip route的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!