![无法 ping 服务器。Cisco/Linksys 交换机上的 VLAN 上的 Wan](https://linux22.com/image/716605/%E6%97%A0%E6%B3%95%20ping%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E3%80%82Cisco%2FLinksys%20%E4%BA%A4%E6%8D%A2%E6%9C%BA%E4%B8%8A%E7%9A%84%20VLAN%20%E4%B8%8A%E7%9A%84%20Wan.png)
我有一台旧的但基本没用过的 Cisco/Linksys slm224g4s 交换机和 Mikrotik B2011UiAS-RM 路由器。我在一台交换机上配置了三个 VLAN,两个用于 WAN1(id:3)和 WAN2(id:4),第三个用于 LAN(id:2)。
我当前的端口配置
port number - designation - port2vlan - port setting pvid
1 - WAN1 input - 2 excl, 3 excl, 4 untagged - 4
2 - WAN2 input - 2 excl, 3 untagged, 4 excl - 3
3-12 servers - 2 tagged, 3 tagged, 4 tagged - 2
13 - WAN1 to router - 2 excl, 3 excl, 4 untagged - 4
14 - WAN2 to router - 2 excl, 3 untagged, 4 excl - 3
15-24 servers - 2 tagged, 3 tagged, 4 tagged - 2
G1 - LAN from router - 2 untagged, 3 excl, 4 excl - 2
G2-G4 servers - 2 tagged, 3 tagged, 4 tagged - 2
管理面板中的配置:http://s3.fmdx.pl/public/cisco/
Mikrotik 路由器将来自两个 ISP 的这两个 WAN 连接结合起来,以建立更可靠的互联网连接,并作为整个公司的路由器。
我们有两个 8 个 IP 地址块,分别来自两个 ISP,路由器仅从每个 ISP 中获取一个 IP 来提供互联网访问。剩余的 IP 地址用于公司服务器(文件、ERP、测试/开发服务器等)。所有地方的 Mtu 都是 1500。
/etc/network/interfaces 配置在临时服务器上如下所示:
# LAN
auto enp1s0.2
iface enp1s0.2 inet static
address 10.1.4.10
gateway 10.1.0.1
netmask 255.255.252.0
dns-nameservers 10.1.0.1
vlan-raw-device enp1s0
mtu 1500
# Netia
allow-hotplug enp1s0.3
iface enp1s0.3 inet static
address 192.168.0.72
gateway 192.168.0.65
netmask 255.255.255.240
dns-nameservers 8.8.8.8 8.8.4.4
vlan-raw-device enp1s0
mtu 1500
# Connected
allow-hotplug enp1s0.4
iface enp1s0.4 inet static
address 192.168.1.168
gateway 192.168.1.161
netmask 255.255.255.240
dns-nameservers 8.8.8.8 8.8.4.4
vlan-raw-device enp1s0
mtu 1500
- 本例中的 WAN IP 地址不是真实的。
Vlan 包已安装,8021q 模块已打开,第一个 vlan 接口(LAN)工作正常,我可以通过该接口 ping 任何内容。
不幸的是,我无法使用第二和第三个 VLAN 接口 ping 任何内容,而且服务器也无法从互联网访问。
ifup enp1s0.3 或 enp1s0.4 返回
Set name-type for VLAN subsystem. Should be visible in /proc/net/vlan/config
RTNETLINK answers: File exists
ifup: failed to bring up enp1s0.3
ifdown enp1s0.3 或 enp1s0.4
ifdown: interface enp1s0.3 not configured
我错过了什么?
答案1
好的。现在一切正常。问题是什么?
我忘记复制我们在每台服务器上部署的几个脚本,其中一个包含以下 bash 代码:
# Connected routing
ip route add "$ISP1_NET" dev "$ISP1_IF" src "$ISP1_IP" table "$ISP1_NAME"
ip route add default via "$ISP1_GW" table "$ISP1_NAME"
ip rule add from "$ISP1_IP" table "$ISP1_NAME"
ip rule add from all to "$ISP1_CHECK_IP" table "$ISP1_NAME"
# Netia routing
ip route add "$ISP2_NET" dev "$ISP2_IF" src "$ISP2_IP" table "$ISP2_NAME"
ip route add default via "$ISP2_GW" table "$ISP2_NAME"
ip rule add from "$ISP2_IP" table "$ISP2_NAME"
ip rule add from all to "$ISP2_CHECK_IP" table "$ISP2_NAME"
另外,我必须将 /etc/network/interfaces 中的 allow-hotplug 更改为 auto 以使其在重启后工作,并修改配置文件中的几个变量。
当你浪费时间时,这些问题是最糟糕的,而解决方案就是这么简单。:)
答案2
提供的解决方案并不完全正确,例如,RTNETLINK answers: File exists
当您尝试重新启动网络或重新启动机器时仍然会收到错误。
有关 debian stretch 的状态,请执行
systemctl status networking.service
除非您再次手动执行脚本,否则您的路线将不起作用。
第一的
您已设置gateway 10.1.0.1
主机netmask 255.255.252.0
最大可以为 10.1.3.254broadcast 10.1.3.255
第二
您只能有一个默认网关。当您指定例如gateway 10.1.0.1
接口时,它将尝试将其指定为默认值,如果已有一个默认网关,您将收到错误RTNETLINK answers: File exists
。
正确的配置应该是
# LAN
auto enp1s0.2
iface enp1s0.2 inet static
address 10.1.3.254/22 # (max host!)
gateway 10.1.0.1
dns-nameservers 10.1.0.1
vlan-raw-device enp1s0
mtu 1500
# Netia
auto enp1s0.3
iface enp1s0.3 inet static
address 192.168.0.72/20
dns-nameservers 8.8.8.8 8.8.4.4
vlan-raw-device enp1s0
mtu 1500
up ip route add 192.168.0.0/20 via 192.168.0.65 ...
up ...
# Connected
auto enp1s0.4
iface enp1s0.4 inet static
address 192.168.1.168/20
dns-nameservers 8.8.8.8 8.8.4.4
vlan-raw-device enp1s0
mtu 1500
up ip route add 192.168.0.0/20 via 192.168.1.161 ...
up ...
请注意,正如我之前提到的,您不能添加多个默认路由ip route add default via ...
。
正确配置后,你auto|allow-auto|allow-hotplug [interface]
应该可以工作了,但你应该检查链接更多的细节。
希望这可以帮助。