无法访问具有静态 IP 且网关为 vlan 的主机 - Debian 10

无法访问具有静态 IP 且网关为 vlan 的主机 - Debian 10

我一直在尝试在 Debian 10 安装中让静态 IP 工作。服务器将在独立于任何其他网络的 VLAN 中运行。根据路由器接口,VLAN ID 为 3。路由器型号为 Pakedge RE-2。

路由器配置:

IP: 192.168.2.1
Netmask: 255.255.255.0
DHCP range: 192.168.2.2 - 192.168.2.10

VLAN 的配置如下:

VLAN IP: 192.168.0.1
Netmask: 255.255.255.0
DHCP range: 192.168.0.10 - 192.168.0.254

服务器静态ip为192.168.0.2。以下是/etc/network/interfaces:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
allow-hotplug eth0
#iface eth0 inet static 
#   address 192.168.0.2
#   netmask 255.255.255.0
#   gateway 192.168.0.1

以下是interfaces.d/eth0:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

#source /etc/network/interfaces.d/*

# The loopback network interface
#auto lo
#iface lo inet loopback

# The primary network interface
#auto eth0
#allow-hotplug eth0
iface eth0 inet static 
    address 192.168.0.2
    netmask 255.255.255.0
    gateway 192.168.0.1

我能够使用 成功 ping 通域名和 IP dhclient eth0,但它使用的 IP 位于路由器的 dhcp 范围内。 ip route之前dhclient eth0

default via 192.168.0.1 dev eth0 onlink 
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.2

ip routedhclient eth0

default via 192.168.0.1 dev eth0 onlink 
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.2 
192.168.2.0/24 dev eth0 proto kernel scope link src 192.168.2.3

'ip a' 输出之前dhclient eth0

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0b:db:be:9f:a5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.2/24 brd 192.168.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20b:dbff:febe:9fa5/64 scope link 
       valid_lft forever preferred_lft forever

我不知道该怎么办。似乎网关可能是一个问题,因为 dhcp 可以工作,但将其更改为路由器 ip(vlan 之外)似乎不起作用,无论我重新启动或重新启动守护进程多少次都不起作用networking。我还想补充一点,重新启动守护进程似乎networking无法检测到/etc/network/interfaces.d/eth0重新启动时的变化,因此似乎我所做的每个测试更改都需要重新启动,这非常烦人。

编辑:我还想补充一点,在我插入进行测试的其他计算机上,以太网连接可以正常工作(域名和 IP 可以成功 ping 回,网站也可以正常工作)(是的,即使在禁用 wifi 之后)。我遇到问题似乎是这台特定的服务器。它在另一个分区上安装了 Windows XP Professional,但似乎也无法在那里自动通信。我想这是硬件问题,但 dhcp 工作正常。可能,我测试的其他计算机正在使用 dhcp,并且由于未设置静态,因此只是连接回 VLAN 外的路由器。我将重新测试不使用 dhcp 和 dhcp 来查看给定的 ip。

编辑 2:我禁用了 vlan 和路由器的 dhcp 服务器,但仍然无法在服务器上连接到互联网。我还想提一下,在禁用 dhcp 服务器之前,我无法 ping 192.168.0.1(vlan ip,即网关),现在仍然无法 ping 192.168.0.1。

编辑 3:感谢 AB,我能够手动使用 vlan 接口。命令如下: ip address delete 192.168.0.2/24 dev eth0; ip link add link eth0 name eth0.3 type vlan id 3; ip link set dev eth0.3 up; ip address add 192.168.0.2/24 dev eth0.3; ip route add default via 192.168.0.1 dev eth0.3

//Deletes the address assigned to eth0
ip address delete 192.168.0.2/24 dev eth0;

//Creates a link to eth0 with the vlan interface eth0.3 which is configured for vlan id 3
ip link add link eth0 name eth0.3 type vlan id 3; 

//Sets eth0.3 up
ip link set dev eth0.3 up; 

//Adds and associates 192.168.0.2/24 with eth0.3
ip address add 192.168.0.2/24 dev eth0.3;

//Configures the default route to go to the gateway 192.168.0.1 with the eth0.3 interface
ip route add default via 192.168.0.1 dev eth0.3;

但是,这并不能解决 ifupdown 配置文件的问题。AB 表示 eth0 上的地址可能是导致 ifupdown 问题的原因。在评论中,有关于在接口配置中将 eth0.3 配置为接口的信息,可能对某些人有帮助。我最终安装了 vlan 包、modprobing 8021q,并创建了一个名为的文件,eth0.3内容/etc/network/interfaces.d/如下:

auto eth0.3 
iface eth0.3 inet static 
        address 192.168.0.2
        netmask 255.255.255.0
        gateway 192.168.0.1
        vlan-raw-device eth0 

但是,正如前面所述,对我来说,这最终导致网络守护进程失败(重新启动后),因为 ifup 无法启动 eth0.3。如果有人有可以帮助解决此问题的信息,那就太好了。

编辑4:当我auto eth0.3从中删除eth0.3/etc/network/interfaces.d,网络守护进程在重新启动时不再失败并显示它处于活动状态,重新启动后systemctl --failed显示没有守护进程启动失败;但是,ping 仍然有效Destination Host Unreachable(即使在重新启动后)。

答案1

我看过与 @ab 的聊天,您能够让 VLAN 正常工作,但您仍然遇到启动和关闭接口的脚本问题。要在启动时加载 8021q 模块,只需执行以下操作:

echo 8021q | sudo tee -a /etc/modules

然后尝试以这种方式设置 /etc/network/interfaces 文件:

iface eth0 inet static

auto eth0.3
iface eth0.3 inet static
        address 192.168.0.2
        netmask 255.255.255.0
        gateway 192.168.0.1
        vlan-raw-device eth0

答案2

我使用 ifupdown 解决了该问题。

如果阅读本文的人没有阅读评论和其他答案,请安装软件包vlan(“apt-get install vlan”或dpkg -i <vlan package name.deb>(如果您处于离线状态并手动将 deb 传输到系统,则使用后者))并(我会在加载和执行下一部分之前重新启动)通过 modprobe 8021q 加载 8021q 内核模块和/或将其放入,8021q以便/etc/modules-load.d/modules.conf每次启动时都会加载它。然后按如下方式编辑以下网络配置文件(根据需要替换 ips 或其他配置选项):

修改/etc/network/interfaces工作:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback 

修改/etc/network/interfaces.d/eth0工作:

# The primary network interface
auto eth0
allow-hotplug eth0
iface eth0 inet manual 
        pre-up ip link set dev $IFACE up
        pre-down ip link set dev $IFACE down

修改/etc/network/interfaces.d/eth0.3工作:

# The vlan network interface
auto eth0.3
allow-hotplug eth0.3
iface eth0.3 inet manual
        address 192.168.0.2
        netmask 255.255.255.0
        gateway 192.168.0.1
        vlan-raw-device eth0

随后重新启动网络守护程序 ( systemctl restart networking) 应该会成功(使用 验证状态systemctl status networking),并且 ping 应该会成功。验证重新启动(推荐)应该会产生相同的结果。

编辑重要的:我在新安装的 Debian 11 上尝试了这些说明,但没有成功。我不确定我是否在修订版中输入了拼写错误/etc/network/interfaces.d/eth0.3,或者 Debian 10 上存在允许iface eth0.3 inet manual运行的怪癖,但至少对于 Debian 11,eth0.3iface 命令应该是iface eth0.3 inet static

相关内容