我一直在尝试在 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 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
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.3
iface 命令应该是iface eth0.3 inet static
。