不同VLAN间通信的方法和配置
1. 多接口直连

这种方法比较传统,路由器的每一个接口连接一个vlan,一个接口对应到一个网段。
由于每个VLAN都对应一个路由器的物理接口,适用于VLAN比较少的场景(路由器的接口通常比较少)。
配置思路
- 在交换机划分VLAN,与PC互联接口配置为ACCESS口,与路由器互联的接口也配置为ACCESS口(出交换机的报文剥离VLAN标签、进入交换机的报文打上对应的VLAN标签);
- 在路由器的物理接口上配置不同的网段;
交换机配置
# 创建VLAN
vlan batch 10 20
# 配置与PC1的互联的接口为VLAN10
interface GigabitEthernet0/0/1
port link-type access
port default vlan 10
# 与PC2互联接口 VLAN20
interface GigabitEthernet0/0/2
port link-type access
port default vlan 20
# 配置与路由器互联的接口VLAN
#
interface GigabitEthernet0/0/23
port link-type access
port default vlan 10
#
interface GigabitEthernet0/0/24
port link-type access
port default vlan 20
路由器配置
# 配置0口为vlan10的网段网关
interface GigabitEthernet0/0/0
ip address 192.168.1.1 255.255.255.0
dhcp select interface
# 配置1口为vlan20的网段网关
interface GigabitEthernet0/0/1
ip address 192.168.2.1 255.255.255.0
dhcp select interface
测试PC1与PC2互通
PC>ping 192.168.2.254
Ping 192.168.2.254: 32 data bytes, Press Ctrl_C to break
From 192.168.2.254: bytes=32 seq=1 ttl=127 time=78 ms
From 192.168.2.254: bytes=32 seq=2 ttl=127 time=79 ms
From 192.168.2.254: bytes=32 seq=3 ttl=127 time=78 ms
From 192.168.2.254: bytes=32 seq=4 ttl=127 time=62 ms
From 192.168.2.254: bytes=32 seq=5 ttl=127 time=47 ms
--- 192.168.2.254 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 47/68/79 ms
测试从PC1 ping PC2可以通。
说明:当PC1访问PC2时,发现PC2并不在同一网段,需要通过网关路由转发,因此二层需要封装网关MAC地址,PC1检查本地ARP表项如果存在网关MAC则直接封装否则发送ARP请求,当ARP请求报文到达交换机后交换机通过泛洪ARP报文到交换机VLAN 10所有接口,这时路由器0口也能收到ARP报文且这个报文目的地址就是它自己,因此回复ARP报文给PC1。
2. 单臂路由

通过路由器的一个物理接口划分出多个子接口,每个子接口对应一个vlan,通过打标签"802.1Q"区分不同vlan流量。
这种方式节省路由器的物理接口,但是所有vlan流量都集中在这个接口上,流量大时容易阻塞。一般适用于小业务场景或者预算比较少情况。
交换机配置
interface GigabitEthernet0/0/1
port link-type access
port default vlan 10
#
interface GigabitEthernet0/0/2
port link-type access
port default vlan 20
# 与路由器互联接口配置为干道,允许vlan 10 20通过,在路由器上区分流量
interface GigabitEthernet0/0/23
port link-type trunk
port trunk allow-pass vlan 10 20
路由器配置
#
interface GigabitEthernet0/0/0
# 配置不同子接口对应不同vlan业务,在子接口上接收对应vlan标签的报文,并且去掉标签进行三层转发
interface GigabitEthernet0/0/0.10
dot1q termination vid 10
ip address 192.168.1.1 255.255.255.0
arp broadcast enable
dhcp select interface
#
interface GigabitEthernet0/0/0.20
dot1q termination vid 20
ip address 192.168.2.1 255.255.255.0
arp broadcast enable
dhcp select interface
测试
PC>ping 192.168.2.254
Ping 192.168.2.254: 32 data bytes, Press Ctrl_C to break
From 192.168.2.254: bytes=32 seq=1 ttl=127 time=78 ms
From 192.168.2.254: bytes=32 seq=2 ttl=127 time=78 ms
From 192.168.2.254: bytes=32 seq=3 ttl=127 time=62 ms
From 192.168.2.254: bytes=32 seq=4 ttl=127 time=78 ms
From 192.168.2.254: bytes=32 seq=5 ttl=127 time=63 ms
--- 192.168.2.254 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 62/71/78 ms
需要注意,华为路由器需要在子接口开启arp广播能力,否则子接口无法发送ARP报文。
3. 三层交换机
现在最主流的做法,目前交换机基本上都支持3层功能,给每个VLAN都创建一个虚接口(VLANIF)作为网关。
速度快,配置简单,目前绝大多数园区网络、内网都这个做。

交换机配置
interface Vlanif10
ip address 192.168.1.1 255.255.255.0
dhcp select interface
#
interface Vlanif20
ip address 192.168.2.1 255.255.255.0
dhcp select interface
需要特别注意vlanif接口号要和vlan编号对应。
测试互通
PC>ping 192.168.2.254
Ping 192.168.2.254: 32 data bytes, Press Ctrl_C to break
From 192.168.2.254: bytes=32 seq=1 ttl=127 time=94 ms
From 192.168.2.254: bytes=32 seq=2 ttl=127 time=31 ms
From 192.168.2.254: bytes=32 seq=3 ttl=127 time=31 ms
From 192.168.2.254: bytes=32 seq=4 ttl=127 time=47 ms
From 192.168.2.254: bytes=32 seq=5 ttl=127 time=32 ms
--- 192.168.2.254 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 31/47/94 ms
PC1访问PC2的报文,经过交换机时交换机解封装二层发现目的MAC地址为VLANIF 10的MAC地址,因此将报文交给交换机路由模块进行处理。
路由模块解析发现数据报去往目的地址为192.168.2.254,非本地接口地址,查找路由表,匹配中VLAN20的直连路由。