我一直在尝试让静态 ip 在 Debian 10 安装上工作。服务器将在独立于任何其他网络的 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
,但它使用的是路由器 dhcp 范围内的 IP。
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 包,修改了 8021q,并创建了一个名为eth0.3
in的文件,/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
in 中删除时/etc/network/interfaces.d
,网络守护程序在重新启动时不再失败并显示它处于活动状态,并且在重新启动后systemctl --failed
显示没有守护程序无法启动;但是,ping 仍然会产生Destination Host Unreachable
(即使在重新启动后)。
我已经看到与@ab 的聊天,您能够使 VLAN 正常工作,但您仍然遇到用于启动和关闭接口的脚本的问题。要在启动时加载 8021q 模块,只需执行以下操作:
然后尝试以这种方式设置 /etc/network/interfaces 文件:
我用 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
该工作:修改
/etc/network/interfaces.d/eth0
该工作:修改
/etc/network/interfaces.d/eth0.3
该工作:随后重新启动网络守护程序 (
systemctl restart networking
) 应该会成功(使用 验证状态systemctl status networking
)并且 ping 应该成功。验证重新启动(推荐)应该会产生相同的结果。