ip命令

ip addr

语法

ip address {add|del} IFADDR dev IFNAME
ip address show [ dev IFNAME ]
ip address flush [ dev IFNAME ]

IFADDR := IP/PREFIX				#IP地址
          [ broadcast ADDR ] 	#广播地址
          [ anycast ADDR ] 		#任播地址,IPV6中
          [ label IFNAME ]		#接口别名
          [ scope SCOPE-ID ] 	#作用域
          
SCOPE-ID := [ host | link | global | site ]
								#host:本机可用
								#link:链路可用
								#global:全局可用

scope解释:
在这里插入图片描述
linux中,所有地址均属于内核。

  • global:假设数据包的目的IP是网卡2,从网卡1进入,内核一看有目的IP,无论是否打开核心转发,都会响应。
  • link:针对global情况是不会响应,它只会响应数据包的目的IP为从对应链路进来的网卡配置的IP。
  • host:不会响应global和link的情况,简单来说源目IP应都是本机内核中存在地址,仅仅本机访问自己有效。

global是在任何的场景下都有效,link是在链路上才有效,这个链路是指同一个端口,也就是说接收和发送都是走的同一个端口的时候,这条路由才会生效(也就是说在同一个二层)。Global则可以转发,例如从一个端口收到的包,可以查询global的路由条目,如果目的地址在另外一个网卡,那么该路由条目可以匹配转发的要求,进行路由转发。Link的scope路由条目是不会转发任何匹配的数据包到其他的硬件网口的。还有就是host,host表示这是一条本地路由,典型的是回环端口,loopback设备使用这种路由条目,该路由条目比link类型的还要严格,约定了都是本机内部的转发,不可能转发到外部。Site则是ipv6专用的路由scope。

配置

1、查看地址

[root@localhost ~]# ip addr show dev ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:3e:3c:76 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.29/24 brd 192.168.1.255 scope global dynamic noprefixroute ens33
       valid_lft 83436sec preferred_lft 83436sec
    inet6 fe80::20c:29ff:fe3e:3c76/64 scope link 
       valid_lft forever preferred_lft forever

2、释放地址

[root@localhost ~]# ip addr flush dev ens33
[root@localhost ~]# ip addr show dev ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:3e:3c:76 brd ff:ff:ff:ff:ff:ff

3、重新获取地址

[root@localhost ~]# ip link set ens33 down
[root@localhost ~]# ip link set ens33 up

4、添加地址

[root@localhost ~]# ip addr add 192.168.1.30/24 label ens33:1 dev ens33
[root@localhost ~]# ip addr show dev ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:3e:3c:76 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.29/24 brd 192.168.1.255 scope global dynamic noprefixroute ens33
       valid_lft 86170sec preferred_lft 86170sec
    inet 192.168.1.30/24 scope global secondary ens33:1
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe3e:3c76/64 scope link 
       valid_lft forever preferred_lft forever

5、删除地址

[root@localhost ~]# ip addr del 192.168.1.30/24 dev ens33 
[root@localhost ~]# ip addr show dev ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:3e:3c:76 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.29/24 brd 192.168.1.255 scope global dynamic noprefixroute ens33
       valid_lft 86368sec preferred_lft 86368sec
    inet6 fe80::20c:29ff:fe3e:3c76/64 scope link 
       valid_lft forever preferred_lft forever

ip route

说明

下面是主机路由

[root@localhost ~]# ip route show
default via 192.168.1.1 dev ens33 proto dhcp metric 100 
10.10.10.0/24 dev ens37 proto kernel scope link src 10.10.10.10 metric 101 
192.168.1.0/24 dev ens33 proto kernel scope link src 192.168.1.29 metric 100 

路由主要由目标网络和下一跳构成,其他dev、proto、scope、src、metric均为辅助决策

  • dev:表示从那个物理设备出去
  • proto:表示该条路由产生的方法
  • scope:表示路由的作用范围
  • src:表示一个进程未bind一个ip地址,其发出的包匹配该条路由发出时,它的源地址为src指定地址。如果该包有源地址即进程已bind地址,包的源地址不修改
  • metric:可以理解为优先级,值越低优先级越高

我们再来说说上面三条路由,其实只说192.168.1.0网段的路由即可

  • 第一条路由为默认路由,表示所有的包都发送到网关,我们知道网关势必和接口地址处于同一网段,包只需从该接口发出即可。但作为网络通信要去封装网关的mac地址,但网关mac地址应通过arp获得,arp包发出又应该封装mac,所以这样进入一个循环,我们需要解决这个问题。
  • 第三条路由,便是解决上诉问题,表示到达192.168.1.0这个网段的包通通从ens33网卡出去,并且其只作用在网卡所在链路即一个网段内,出去的包源地址为192.168.1.29。通过该条路由,arp包(封装配置文件ifcfg-ens33中指定的网关)知道了应从该网卡出去获取网关192.168.1.1的mac地址。

语法

ip route { add | del } TARGET_NET [ via ADDRESS ] [ dev IFACE ] [ table TABLE_ID ] [ proto RTPROTO ] [ src ADDRESS ] [ scope SCOPE ] [ metric METRIC ]
ip route show [ via ADDRESS ] [ dev IFACE ]
ip route flush [ via ADDRESS ] [ dev IFACE ]

TABLE_ID := [ local | main | default | all | NUMBER ]
SCOPE := [ host | link | global | NUMBER ]
RTPROTO := [ kernel | boot | static | NUMBER ]

配置

  1. 添加默认路由
[root@localhost ~]# ip route add default via 10.10.10.1 dev ens37
[root@localhost ~]# ip route show dev ens37
default via 10.10.10.1 
10.10.10.0/24 proto kernel scope link src 10.10.10.10 metric 101
  1. 添加路由
[root@localhost ~]# ip route add 10.10.20.0/24 via 10.10.10.1 dev ens37
[root@localhost ~]# ip route show dev ens37
default via 10.10.10.1 
10.10.10.0/24 proto kernel scope link src 10.10.10.10 metric 101 
10.10.20.0/24 via 10.10.10.1
  1. 删除路由
[root@localhost ~]# ip route del 10.10.20.0/24 dev ens37
[root@localhost ~]# ip route show dev ens37
default via 10.10.10.1 
10.10.10.0/24 proto kernel scope link src 10.10.10.10 metric 101
  1. metric配置

metric即优先级,这里我们配置一条默认路由,使其优先级高于默认的100

[root@localhost ~]# ip route show
default via 192.168.1.1 dev ens33 proto dhcp metric 100 
default via 10.10.10.1 dev ens37 proto static metric 101 
10.10.10.0/24 dev ens37 proto kernel scope link src 10.10.10.10 metric 101 
192.168.1.0/24 dev ens33 proto kernel scope link src 192.168.1.29 metric 100

[root@localhost ~]# ip route add default via 10.10.10.1 dev ens37 metric 80
[root@localhost ~]# ip route show
default via 10.10.10.1 dev ens37 metric 80 
default via 192.168.1.1 dev ens33 proto dhcp metric 100 
default via 10.10.10.1 dev ens37 proto static metric 101 
10.10.10.0/24 dev ens37 proto kernel scope link src 10.10.10.10 metric 101 
192.168.1.0/24 dev ens33 proto kernel scope link src 192.168.1.29 metric 100

我的ssh连接使用的10.10.10.0/24网段不能访问公网,公网访问是192.168.1.0/24网段
实验完成后效果是ssh未中断,但外网访问会失败,因为默认路由匹配优先级为80的出去了
[root@localhost ~]# ping www.baidu.com
PING www.a.shifen.com (14.215.177.38) 56(84) bytes of data.

^C
--- www.a.shifen.com ping statistics ---
128 packets transmitted, 0 received, 100% packet loss, time 157ms
实验结果正确,可以看见发送出128个包,全部丢失,没有任何回应

ip neigh

语法

ip neigh { add | del | change | replace } ADDR [ lladdr LLADDR ] [ dev DEV ]
ip neigh show [ dev DEV ]
ip neigh flush dev DEV

配置

  1. 查看arp表
[root@localhost ~]# ip neigh show
192.168.3.1 dev ens33 lladdr 90:94:97:fa:db:f7 STALE
10.10.10.20 dev ens37 lladdr 00:0c:29:cd:d1:54 STALE
192.168.1.4 dev ens33 lladdr 4c:6f:9c:d9:fb:1b STALE
192.168.1.1 dev ens33 lladdr f0:92:b4:35:60:f8 STALE
192.168.1.6 dev ens33 lladdr c0:d2:f3:14:ed:e9 STALE
10.10.10.1 dev ens37 lladdr 00:50:56:c0:00:01 REACHABLE
192.168.1.15 dev ens33 lladdr 4c:49:e3:1e:5b:00 STALE
192.168.1.19 dev ens33 lladdr 1c:4d:70:91:c6:b6 STALE
  1. 清空arp表
[root@localhost ~]# ip neigh flush dev ens33
[root@localhost ~]# ip neigh flush dev ens37
[root@localhost ~]# ip neigh list
10.10.10.1 dev ens37 lladdr 00:50:56:c0:00:01 REACHABLE

ip monitor

监控 [ROUTE]路由表,[NEIGH]邻接表,[LINK]网络接口 或 [ADDR] IP地址

语法

ip monitor all [dev DEVICE]

配置

[root@localhost ~]# ip monitor all 
[ROUTE]Deleted 10.10.20.0/24 dev ens33 scope link
[NEIGH]192.168.1.1 dev ens33 lladdr f0:92:b4:35:60:f8 PROBE
[NEIGH]192.168.1.1 dev ens33 lladdr f0:92:b4:35:60:f8 REACHABLE
[NEIGH]192.168.1.1 dev ens33 lladdr f0:92:b4:35:60:f8 STALE
[ADDR]Deleted 5: net2 inet 10.10.10.100/24 scope global net2
       valid_lft forever preferred_lft forever
[ROUTE]Deleted broadcast 10.10.10.255 dev net2 table local proto kernel scope link src 10.10.10.100 linkdown 
[ROUTE]Deleted broadcast 10.10.10.0 dev net2 table local proto kernel scope link src 10.10.10.100 linkdown 
[ROUTE]Deleted local 10.10.10.100 dev net2 table local proto kernel scope host src 10.10.10.100 
[NEIGH]192.168.1.1 dev ens33 lladdr f0:92:b4:35:60:f8 PROBE
[NEIGH]192.168.1.1 dev ens33 lladdr f0:92:b4:35:60:f8 REACHABLE
[LINK]5: net2: <POINTOPOINT,MULTICAST,NOARP> mtu 1500 qdisc fq_codel state DOWN group default link/none 
[NEIGH]Deleted 0.0.0.0 dev net2 lladdr 08 NOARP

ip rule

说明

ip rule定义策略路由,匹配条件查找转发指定路由表。所以可以理解系统路由时,ip rule在ip route之前处理。

[root@localhost ~]# ip rule show
0:	from all lookup local 
32766:	from all lookup main 
32767:	from all lookup default 

从上面三条规则看,匹配所有的源地址,根据优先级,优先级最高的0首先匹配,查找local转发,如果未匹配依次匹配后续规则

[root@localhost ~]# cat /etc/iproute2/rt_tables 
#
# reserved values
#
255	local
254	main
253	default
0	unspec
#
# local
#
#1	inr.ruhep

路由表记录在/etc/iproute2/rt_tables文件中,默认里面会用这么几行,在这个文件里添加的路由表即时生效。

我们依次查看各路由表中的路由规则

存储的是内核自动生成本机路由、广播路由和NAT,不能被删除或者覆盖。  
[root@localhost ~]# ip route show table local
broadcast 10.10.10.0 dev ens33 proto kernel scope link src 10.10.10.10 
local 10.10.10.10 dev ens33 proto kernel scope host src 10.10.10.10 
broadcast 10.10.10.255 dev ens33 proto kernel scope link src 10.10.10.10 
broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1 
local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1 
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1 
broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1 

没有使用策略的路由存在该表中,也就是前面使用ip route add时无需指明table
[root@localhost ~]# ip route show table main
10.10.10.0/24 dev ens33 proto kernel scope link src 10.10.10.10 metric 100 

作保留用,对于前面的缺省策略没有匹配到的数据包,系统使用这个策略进行处理。这个规则也可以删除。
[root@localhost ~]# ip route show table default

语法

Usage: ip rule { add | del } SELECTOR ACTION
       ip rule { flush | save | restore }
       ip rule [ list [ SELECTOR ]]
SELECTOR := [ not ] [ from PREFIX ] [ to PREFIX ] [ tos TOS ]
            [ pref NUMBER ] [ fwmark FWMARK[/MASK] ]
            [ sport [ NUMBER | NUMBER-NUMBER ]
            [ dport [ NUMBER | NUMBER-NUMBER ] ]
ACTION := [ table TABLE_ID ]
          [ protocol PROTO ]
          [ nat ADDRESS ]

not:取反
from:源网段
to:目的网段
tos:tos字段
pref:优先级		#和ip route的metric一样效果
fwmark:防火墙标记
sport:源端口
dport:目的端口

配置

删除原有main规则,自建规则访问网络

1、删除main规则
ip rule del table main
#此时网络便已经不通,网关也无法访问

2、添加路由表配置
echo "252	test" >> /etc/iproute2/rt_table

3、添加新规则
ip rule add from all pref 100 table test

4、添加路由
#让arp包出去
ip route add 10.10.10.0/24 dev ens33 scope link src 10.10.10.10 table test
#添加默认路由
ip route add default via 10.10.10.1 dev ens33 table test

至此,我们可以根据流量进行分类,按规则转发。

完整截图
在这里插入图片描述

ip netns

网络名称空间,实现虚拟化网络关键

语法

ip netns list
ip netns add NAME
ip netns delete [NAME]
ip netns exec [NAME] cmd ...

配置

  1. 创建名称空间
[root@localhost ~]# ip netns add ns1
  1. 查看名称空间
[root@localhost ~]# ip netns show
ns1
  1. 在名称空间中执行系统命令
[root@localhost ~]# ip netns exec ns1 bash		#执行bash
[root@localhost ~]# ip addr show				#默认名称空间生产lo,未启用
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
[root@localhost ~]# exit
  1. 删除名称空间
[root@localhost ~]# ip netns del ns1

ip link

说明

网络设备一般来说只有两端,数据从一端进入另一端出来。如物理网卡一端接入协议栈,一端接入物理网络;所以,从协议栈一端来的数据从物理网络一端出去;同样,从物理网络一端来的数据从协议栈一端出去。

bridge

bridge设备相对于一般的网络设备不一样,同交换机作用一样。网桥可以具有多个端口,一端接入协议栈,其他端口可分别接入网络设备,实现网络设备数据交换。

+----------------------------------------------------------------+
|                                                                |
|       +------------------------------------------------+       |
|       |             Newwork Protocol Stack             |       |
|       +------------------------------------------------+       |
|              ↑                                ↑                |
|..............|................................|................|
|              ↓                                ↓                |
|        +-----------+                    +------------+         |
|        |   ens33   |                    |     br0    |         |
|        +-----------+                    +------------+         |
||
|              |                                                 |
|              |                                                 |
+--------------|-------------------------------------------------+
               ↓
         Physical Network

veth

veth设备是成对出现,它们之间一端互联,另一端接入协议栈。

一个设备收到数据后会通过互联端发送到另一个设备。

veth设备和协议栈以及自己之间均为双向通信。

+----------------------------------------------------------------+
|                                                                |
|       +------------------------------------------------+       |
|       |             Newwork Protocol Stack             |       |
|       +------------------------------------------------+       |
|              ↑               ↑               ↑                 |
|..............|...............|...............|.................|
|              ↓               ↓               ↓                 |
|        +-----------+    +-----------+   +-----------+          |
|        |   ens33   |    |   veth0   |   |   veth1   |          |
|        +-----------+    +-----------+   +-----------+          |
|              ↑               ↑               ↑                 |
|              |               +---------------+                 |
|              |                                                 |
+--------------|-------------------------------------------------+
               ↓
         Physical Network

语法

Usage: ip link add [ name ] NAME
                   [ address LLADDR ]
                   [ broadcast LLADDR ]
                   [ mtu MTU ]
                   type TYPE

       ip link delete dev DEVICE type TYPE

       ip link set dev DEVICE
	          [ { up | down } ]
	          [ type TYPE ARGS ]
	          [ arp { on | off } ]
	          [ dynamic { on | off } ]
	          [ multicast { on | off } ]
	          [ promisc { on | off } ]
	          [ name NEWNAME ]
	          [ address LLADDR ]
	          [ broadcast LLADDR ]
	          [ mtu MTU ]
	          [ netns { PID | NAME } ]
			  [ master DEVICE ]
			  [ protodown { on | off } ]

       ip link show [ DEVICE ] [up] [master DEV] [type TYPE]

       ip link help [ TYPE ]

TYPE := { vlan | veth | bridge  }

配置

  1. bridge配置
1、新建
[root@localhost ~]# ip link add name br0 address 00:0c:29:3e:3c:80 type bridge
2、删除
[root@localhost ~]# ip link del dev br0
3、网卡连接网桥
[root@localhost ~]# ip link set dev ens37 master br0
4、查看已桥接设备
[root@localhost ~]# bridge link
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 32 cost 4 
  1. veth配置
1、新建
[root@localhost ~]# ip link add name veth0 type veth peer name veth1
2、删除
[root@localhost ~]# ip link del dev [ veth0 | veth1 ]
3、把一个加入ns中
[root@localhost ~]# ip netns add ns1
[root@localhost ~]# ip link set veth1 netns ns1
4、查看veth0和veth1
[root@localhost ~]# ip link show type veth
11: veth0@if10: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether fe:30:d4:68:0f:3e brd ff:ff:ff:ff:ff:ff link-netns ns1

[root@localhost ~]# ip netns exec ns1 bash
[root@localhost ~]# ip link show type veth
10: veth1@if11: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether e2:55:d2:0a:69:54 brd ff:ff:ff:ff:ff:ff link-netnsid 0
  1. link设置
1、启用或禁用
[root@localhost ~]# ip link set veth1 up
[root@localhost ~]# ip link set veth1 down
2、开启混杂模式
[root@localhost ~]# ip link set veth1 promisc on
[root@localhost ~]# ip link set veth1 promisc off
3、设置名字
[root@localhost ~]# ip link set veth1 name eth0
4、设置mac地址
[root@localhost ~]# ip link set eth0 address e2:55:d2:0a:69:54

ip tuntap

说明

tun模拟2层设备,tap模拟3层设备。
tun是一个点对点的设备,它不需要有数据链路层头,而tap设备需要。

tun/tap设备作用是将协议栈中的部分数据转发到用户空间的应用程序,通过应用程序对数据进行压缩、加密和修改。常见用在tunnel。

+----------------------------------------------------------------+
|                                                                |
|  +--------------------+      +--------------------+            |
|  | User Application A |      | User Application B |<-----+     |
|  +--------------------+      +--------------------+      |     |
|               | 1                    | 5                 |     |
|...............|......................|...................|.....|
|               ↓                      ↓                   |     |
|         +----------+           +----------+              |     |
|         | socket A |           | socket B |              |     |
|         +----------+           +----------+              |     |
|                 | 2               | 6                    |     |
|.................|.................|......................|.....|
|                 ↓                 ↓                      |     |
|             +------------------------+                 4 |     |
|             | Newwork Protocol Stack |                   |     |
|             +------------------------+                   |     |
|                | 7                 | 3                   |     |
|................|...................|.....................|.....|
|                ↓                   ↓                     |     |
|        +----------------+    +----------------+          |     |
|        |      ens33     |    |      tun0      |          |     |
|        +----------------+    +----------------+          |     |
|                |                   |                     |     |
|                | 8                 +---------------------+     |
|                |                                               |
+----------------|-----------------------------------------------+
                 ↓
         Physical Network

语法

ip tuntap { add | del | show | list | help } [ mode { tun | tap } ] [ name NAME ]

配置

1、添加tuntap
[root@localhost ~]# ip tuntap add mode tap name tap0

2、删除tuntap
[root@localhost ~]# ip tuntap del mode tap dev tap1
[root@localhost ~]# ip link del dev tap0

3、tun和tap区别
[root@localhost ~]# ip link show type tun
14: tun: <POINTOPOINT,MULTICAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 500
    link/none 
16: tap: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 3a:e5:61:91:7a:3c brd ff:ff:ff:ff:ff:ff
#可以看出,tun为2层点对点设备没有mac,tap为3层有mac

实验

bridge+veth

将veth0和br0相连,veth0和协议栈变为单项通信,只允许数据从协议栈→veth0。

+----------------------------------------------------------------+
|                             ping                               |
|                             ||
|                             | |                                |
||                                |
|       +------------------------------------------------+       |
|       |             Newwork Protocol Stack             |       |
|       +------------------------------------------------+       |
|            ↑            ↑              ||
|............|............|..............|............|..........|
|            ↓            ↓              ↓            ↓          |
|        +-------+     +-------+     +-------+    +-------+      |
|        |  .10  |     |       |     |       |    |       |      |
|        +-------+     +-------+     +-------+    +-------+      |
|        | ens33 |     |  br0  |<--->| veth0 |    | veth1 |      |
|        +-------+     +-------+     +-------+    +-------+      |
|            ↑                           ↑            ↑          |
|            |                           |            |          |
|            |                           +------------+          |
|            |                                                   |
+------------|---------------------------------------------------+
             ↓
     Physical Network
1、创建网络名称空间
[root@localhost ~]# ip netns add ns1

2、添加veth
[root@localhost ~]# ip link add name veth0 type veth peer name veth1

3、将veth1加入ns1
[root@localhost ~]# ip link set veth1 netns ns1
[root@localhost ~]# ip netns exec ns1 bash
[root@localhost ~]# ip addr add 10.10.10.12/24 dev veth1

4、创建网桥br0
[root@localhost ~]# ip link add name br0 type bridge

5、veth0桥接到br0
[root@localhost ~]# ip link set dev veth0 master br0
[root@localhost ~]# bridge link
5: veth0@if4: <BROADCAST,MULTICAST> mtu 1500 master br0 state disabled priority 32 cost 2

6、启用各网卡
[root@localhost ~]# ip link set veth0 up
[root@localhost ~]# ip link set br0 up
[root@localhost ~]# ip netns exec ns1 bash
[root@localhost ~]# ip link set veth1 up

以上配置完成后只需要给对应网卡添加ip地址和添加路由即可。

但:
1、如果ens33和veth1是同一网段,假设ens33地址为10.10.10.10、veth1地址为10.10.10.12。此时.10网段路由在ens33链路上,没有指向veth0网段路由,即我们不能本机和外网访问名称空间的veth1地址。
2、如果ens33和veth2不是同一网段,假设ens33地址为10.10.10.10、br0地址为10.10.20.11、veth1地址为10.10.20.12。此时.20网段路由在br0链路上,本机可以访问veth1,同样也可以从网络名称空间访问到ens33和br0。但,无法从外网访问到veth1,因为外网没有到.20网段的路由,同样网络名称空间也无法访问外网。

ens33+bridge+veth

将ens33物理网卡桥接到br0,同时在图中去掉ens33、br0、veth0和协议栈的连线。

+----------------------------------------------------------------+
|                             ping                               |
|                             ||
|                             | |                                |
||                                |
|       +------------------------------------------------+       |
|       |             Newwork Protocol Stack             |       |
|       +------------------------------------------------+       |
|            |             |             ||
|............|.............|.............|............|..........|
|            ↓             ↓             ↓            ↓          |
|        +-------+     +-------+     +-------+    +-------+      |
|        |       |     |       |     |       |    |  .12  |      |
|        +-------+     +-------+     +-------+    +-------+      |
|        | ens33 |<--->|  br0  |<--->| veth0 |    | veth1 |      |
|        +-------+     +-------+     +-------+    +-------+      |
|            ↑                           ↑            ↑          |
|            |                           |            |          |
|            |                           +------------+          |
|            |                                                   |
+------------|---------------------------------------------------+
             ↓
     Physical Network

在上述条件下我们需要将物理网卡桥接到br0即可

[root@localhost ~]# ip link set dev ens33 master br0

此时,我们需要删除ens33的ip地址,这样我们可以从外网访问veth1,同样也可以从名称空间访问网关。
至于br0,可以选配地址,为br0添加了.11地址,网络同样正常。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值