![具有访问公共网络的 Cisco 内部 VLAN 设置](https://linux22.com/image/643143/%E5%85%B7%E6%9C%89%E8%AE%BF%E9%97%AE%E5%85%AC%E5%85%B1%E7%BD%91%E7%BB%9C%E7%9A%84%20Cisco%20%E5%86%85%E9%83%A8%20VLAN%20%E8%AE%BE%E7%BD%AE.png)
我有一台 Cisco 4948 交换机,我将其分成两半(一半是公共 VLAN,一半是用于 NAS 访问的私有 VLAN)。在公共端,Gi1/0 是到路由器的上游连接,G1/0-23 配置在 VLAN1 中,用于公共访问。公共 IP 为 xx.47.90.0/24,网关为 xx.47.90.1(位于路由器上...并分配给路由器上的单独 VLAN)
端口 G1/24-48 被设计为 VLAN2,并设置为私有访问。私有网络定义为 10.1.40.0/24。我已将 10.1.40.1 添加到 VLAN2 接口,并将其用作私有网络上服务器的默认网关(以及交换机的管理 IP)。
一切正常,只要服务器有两个 NIC,它们就可以访问两个网络。我的问题是,仅位于私有 VLAN 上的服务器无法访问公共网络。所以我的问题是
1) 我是否应该使用 10.1.40.1 作为专用网络上服务器的网关?或者我应该使用公共网关 (xx.47.90.1),即使分配给服务器的唯一 IP 位于专用范围内?
2) 是否需要在 VLAN2(专用)上进行配置以允许其访问公共网络?我见过的所有文档都是针对公共 IP 位于设备上的路由器编写的。基本上,我想要做的是将所有流量路由到公共网关 xx.47.90.1(10.1.40.0/24 除外)
答案1
您是否已为交换机上的 VLAN1 和 VLAN2 接口分配了 IP 地址?您是否已在交换机上启用 IP 路由?如果没有,则需要启用。
如果您的目标是允许 VLAN1 和 VLAN2 中的主机相互通信,并且仅允许 VLAN 1 中的主机访问互联网,那么您只需要为 VLAN1 和 VLAN2 接口配置适当的 IP 地址,并在交换机上启用 IP 路由。
如果您还需要 VLAN2 中的主机访问互联网,那么交换机和路由器上还需要进行一些配置。
答案2
您将需要使用与主机位于同一子网上的网关;如果它们不在同一个子网上,它们将无法知道如何到达网关(不完全正确;您可以进行 arp 欺骗和第 2 层代理,但这很丑陋而且不太好)。
如果内部和外部网关地址都位于路由器内,而不是一个位于路由器中,一个位于交换机中,那么将会很有帮助。您可以通过将路由器和交换机之间的连接设为中继(旧时有时称之为 ISL(交换机间链路)或交叉连接或联络线)来实现此目的,将 VLAN1 和 VLAN2 都指定为要封装在中继线上,并在路由器和交换机的上行链路端口上对中继进行相同的配置。
在路由器内部,您需要将网关 IP 号码分配给相应的 VLAN 虚拟接口。
为了让 10.1.40/24 中的机器出去(或者更重要的是,出去并回来),您需要设置 NAT(或 Linux 人员所说的“伪装”)。这将允许所有 10.1.40/24 地址映射到 xx.47.90/24 范围内的一个或多个地址(因此上游提供商将能够知道如何处理它们),并保留状态以便将返回流量发送回正确的原始服务器。
由于您使用的是 Cisco 设备,您可能需要查看以下说明http://www.cisco.com/c/en/us/support/docs/ip/network-address-translation-nat/13772-12.pdf,其中介绍了如何在 Cisco 路由器中设置 NAT,尤其是标题为“示例:允许内部用户访问互联网“。这将允许他们进行出站访问,并允许已建立会话的返回流量,但不允许入站流量(特别是如果您明确过滤掉 VLAN1 接口或该接口上游的源路由流量)。