设置如下:
两家公司(A 和 B)共用办公空间和 LAN。引入了第二个 ISP,A 公司需要自己的 Internet 连接(ISP A),B 公司需要自己的 Internet 连接(ISP B)。
内部部署VLAN,分离两家公司的网络(公司A:VLAN 1,公司B:VLAN 2,共享VOIP:VLAN 3)。
有了单独的 VLAN,使用单独的 DHCP 服务器(或同一服务器上的单独范围)将默认网关分配给每个公司的网关以用于其 Internet 连接就很简单了。可以在每个网关上创建静态路由,以指向发往其他公司的 VLAN 或语音 VLAN 的流量,以便所有节点都可按预期访问。
不过,我认为这是一种不对称路由的形式,对吗?(从节点 A1 到节点 B1 的路径与从节点 B1 到节点 A1 的路径不一样)。
我可以设置基于策略的路由来纠正此问题吗?在这种情况下,我可以将相同的默认网关分配给所有 VLAN 上的每个设备,并在 L3 交换机上创建路由策略以查看源地址并将流量转发到适当的下一跳吗?在这种情况下,我希望路由逻辑如下:
- 如果知道目标地址,则转发流量(发往不同 VLAN 的流量)。
- 如果目的地址未知,则如果源地址在 VLAN A 上,则将流量转发到 ISP A 的网关;如果源地址是 VLAN B,则将流量转发到 ISP B 的网关。
我是否以正确的方式思考了这个问题?还有其他方法可以解决我忽略的这个问题吗?
更新
我尝试了 Kyle 的以下解决方案,但遇到了一些问题。以下是我的配置的相关部分(顺便说一下,我正在使用 2821 进行测试):
interface GigabitEthernet0/0
ip address 10.0.1.1 255.255.255.0
no ip proxy-arp
duplex auto
speed auto
no mop enabled
!
interface GigabitEthernet0/0.100
description VoIP VLAN stub
encapsulation dot1Q 100
ip address 10.0.100.1 255.255.255.0
no ip proxy-arp
!
interface GigabitEthernet0/0.110
description RT VLAN stub
encapsulation dot1Q 110
ip address 10.0.110.1 255.255.255.0
no ip proxy-arp
ip policy route-map RT-out
!
interface GigabitEthernet0/0.120
description TCI VLAN stub
encapsulation dot1Q 120
ip address 10.0.120.1 255.255.255.0
no ip proxy-arp
ip policy route-map TCI-out
!
interface GigabitEthernet0/1
ip address 192.168.1.20 255.255.255.0
no ip proxy-arp
duplex auto
speed auto
!
ip route 192.168.0.0 255.255.0.0 192.168.1.2
!
ip access-list extended match-RT-out
permit ip 10.0.110.0 0.0.0.255 any
ip access-list extended match-TCI-out
permit ip 10.0.120.0 0.0.0.255 any
!
route-map TCI-out permit 11
match ip address match-TCI-out
set ip next-hop 192.168.12.2
!
route-map RT-out permit 10
match ip address match-RT-out
set ip next-hop 192.168.11.2
!
输出如下show ip route
:
10.0.0.0/24 is subnetted, 4 subnets
C 10.0.1.0 is directly connected, GigabitEthernet0/0
C 10.0.110.0 is directly connected, GigabitEthernet0/0.110
C 10.0.100.0 is directly connected, GigabitEthernet0/0.100
C 10.0.120.0 is directly connected, GigabitEthernet0/0.120
C 192.168.1.0/24 is directly connected, GigabitEthernet0/1
S 192.168.0.0/16 [1/0] via 192.168.1.2
问题就在这里:我的路由图似乎没有工作(好吧,我认为它们是匹配的,但它们似乎没有修改下一跳结果)。debug ip policy
对外部 IP 地址执行一次 ping 的输出:
*May 5 21:26:11.631: IP: s=10.0.120.100 (GigabitEthernet0/0.120), d=209.85.225.100, len 52, FIB policy match
*May 5 21:26:11.631: CEF-IP-POLICY: fib for address 192.168.12.2 is with flag 0
*May 5 21:26:11.631: IP: s=10.0.120.100 (GigabitEthernet0/0.120), d=209.85.225.100, len 52, FIB policy rejected - normal forwarding
*May 5 21:26:11.631: IP: s=10.0.120.100 (GigabitEthernet0/0.120), d=209.85.225.100, len 52, policy match
*May 5 21:26:11.631: IP: route map TCI-out, item 11, permit
*May 5 21:26:11.631: IP: s=10.0.120.100 (GigabitEthernet0/0.120), d=209.85.225.100, len 52, policy rejected -- normal forwarding
因此,您可以在该输出中看到它看起来匹配...紧接着是FIB policy rejected - normal forwarding
。在这种情况下,我从路由器(10.0.120.1)收到 ICMP 目标主机不可达信息(当我尝试 ping 209.85.225.100 时)。
这篇文章很长,但希望它能解释我遇到的问题。
答案1
由于它们是不同的网络,您只需使用基于策略的路由设置基于源的路由,即可根据传出数据包的源 IP 地址路由出不同的接口。
对于 Cisco IOS 来说,基本上如下(我认为,未经测试)(F0/0 是内部接口,12.12.12.12 和 13.13.13.13 是您的两个 IP 网关,您有两个 LAN 192.168.0.0/16 和 10.0.0.0/8):
interface FastEthernet0/0
ip policy route-map foo-out
route-map foo-out permit 10
match ip address match-foo-out
set ip next-hop 12.12.12.12
route-map foo-out permit 11
match ip address match-foo2-out
set ip next-hop 13.13.13.13
ip access-list extended match-foo-out
deny ip 10.0.0.0 0.255.255.255 any
permit ip 192.168.0.0 0.0.255.255 any
ip access-list extended match-foo2-out
deny ip 192.168.0.0 0.0.255.255 any
permit ip 10.0.0.0 0.255.255.255 any
如果这些只是帧中继,那么设置接口而不是下一个希望也是可以的。
对于公司间通信,您实际上不需要做任何事情,只需更改这些 acl,以便它们拒绝来自同一公司的源和目标,即:deny ip 192.168.0.0 0.0.255.255 10.0.0.0 0.255.255.255
。此外,如果这是两个 lan 接口,则每个接口使用不同的路由图可能更有意义或更有必要,这只是一个例子,希望能够引导您朝着正确的方向前进 :-)