为什么我有一个用于 ssh 的 IP 而 ifconfig 在 eth0 中显示另一个?

为什么我有一个用于 ssh 的 IP 而 ifconfig 在 eth0 中显示另一个?

操作系统:Ubuntu 16.04 LTS(GNU/Linux 4.4.0-1009-raspi2 armv7l)

因此,当我使用 Putty 从 Windows 通过 ssh 连接到我的机器时,我能够使用 IP192.168.0.60

现在,当我从路由器管理网站列出我的设备时,它显示它正在使用 IP192.168.0.109

这是 ifconfig cmd 的输出。

eth0      Link encap:Ethernet  HWaddr b8:27:eb:86:e1:e0
      inet addr:192.168.0.109  Bcast:192.168.0.255  Mask:255.255.255.0
      inet6 addr: fe80::ba27:ebff:fe86:e1e0/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:2233 errors:0 dropped:0 overruns:0 frame:0
      TX packets:1067 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000
      RX bytes:163132 (163.1 KB)  TX bytes:167801 (167.8 KB)

这就是我所拥有的等/网络/接口

auto eth0
iface eth0 inet static
address 192.168.0.60
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameserver 8.8.8.8
dns-nameserver 8.8.4.4

需要考虑的另一个事实是,当我重新启动网络服务时,它会引发以下错误:

    Job for networking.service failed because the control process exited with
 error code. See "systemctl status networking.service" and "journalctl -xe" for details.

这是systemctl status 网络服务输出:

networking.service - Raise network interfaces
   Loaded: loaded (/lib/systemd/system/networking.service; enabled; vendor preset: enabled)
  Drop-In: /run/systemd/generator/networking.service.d
           └─50-insserv.conf-$network.conf
   Active: failed (Result: exit-code) since Thu 2017-03-23 15:31:59 UTC; 2min 1s ago
     Docs: man:interfaces(5)
  Process: 2046 ExecStart=/sbin/ifup -a --read-environment (code=exited, status=1/FAILURE)
  Process: 2038 ExecStartPre=/bin/sh -c [ "$CONFIGURE_INTERFACES" != "no" ] && [ -n "$(ifquery --read-environment --list
 Main PID: 2046 (code=exited, status=1/FAILURE)

Mar 23 15:31:58 ubuntu dhclient[2065]: DHCPREQUEST of 192.168.0.109 on eth0 to 255.255.255.255 port 67 (xid=0x6fc3c068)
Mar 23 15:31:58 ubuntu dhclient[2065]: DHCPACK of 192.168.0.109 from 192.168.0.1
Mar 23 15:31:58 ubuntu ifup[2046]: RTNETLINK answers: File exists
Mar 23 15:31:59 ubuntu ifup[2046]: bound to 192.168.0.109 -- renewal in 657200529 seconds.
Mar 23 15:31:59 ubuntu ifup[2046]: RTNETLINK answers: File exists
Mar 23 15:31:59 ubuntu ifup[2046]: Failed to bring up eth0.
Mar 23 15:31:59 ubuntu systemd[1]: networking.service: Main process exited, code=exited, status=1/FAILURE
Mar 23 15:31:59 ubuntu systemd[1]: Failed to start Raise network interfaces.
Mar 23 15:31:59 ubuntu systemd[1]: networking.service: Unit entered failed state.
Mar 23 15:31:59 ubuntu systemd[1]: networking.service: Failed with result 'exit-code'.

请注意以下行:

Mar 23 15:31:59 ubuntu systemd[1]: Failed to start Raise network interfaces.

有人能告诉我发生了什么事以及如何解决吗?

编辑:路线-n的结果:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

答案1

您可能定义了静态 IP 地址,但同时也运行了 DHCP。

不要使用 ifconfig,而是通过以下方式查看接口上是否配置了多个 IP 地址

ip addr show eth0

查看是否有 dhcp 服务正在运行

ps -ef | grep dhcp

您可以通过以下方式禁用 dhcp 服务

sudo systemctl disable dhcpcd

然后我会说重启设备,看看辅助 IP 地址是否消失。这可能是因为您的 DNS(/etc/resolv.conf)设置正确,并指向您的 DHCP 服务器以获取 IP

答案2

我发现如果你利用/etc/网络/接口在 Ubuntu 中,最好禁用 Ubuntu 的网络管理器。当您在配置文件中设置静态 IP 等但 NetworkManager 却喜欢做自己的事情时,我和我的同事遇到了奇怪的问题。

查看停止并禁用 NetworkManager在 Ubuntu 帮助网站上。

尽管您的接口正在接收动态 IP,但您可以访问静态 IP,所以看看您的路由表是什么样的会很有趣: 路线-n

答案3

我遇到了类似的问题。

  • 登录时我可以ssh从 192.168.1.83 和 192.168.1.253 登录。

  • 但是在配置时,我将其设置为手动 IPv4 配置并删除了 DHCP。

  • 但由于某种原因,它采用了 DHCP IP 192.168.1.83。

  • 我运行了ifconfig并显示了以下输出。

    [root@network ~]# ifconfig
    enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 192.168.1.83  netmask 255.255.255.0  broadcast 192.168.1.255
    ether 08:00:27:7c:23:31  txqueuelen 1000  (Ethernet)
    RX packets 11722  bytes 15567876 (14.8 MiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 4551  bytes 331004 (323.2 KiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
  • 如果我执行,ip addr show我会得到以下输出,我很困惑为什么它会拾取两个 IP。我记得在配置时删除了 192.168.1.83,但它仍然显示出来。

    [root@network ~]# ip addr show
    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: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 08:00:27:7c:23:31 brd ff:ff:ff:ff:ff:ff
        inet 192.168.1.83/24 brd 192.168.1.255 scope global dynamic noprefixroute enp0s3
           valid_lft 85901sec preferred_lft 85901sec
        inet 192.168.1.253/24 brd 192.168.1.255 scope global secondary noprefixroute enp0s3
           valid_lft forever preferred_lft forever
    
  • 然后我对其进行了修改/etc/sysconfig/network-scripts/ifcfg-enp0s3、删除BOOTPROTO=dhcp并制作了它BOOTPROTO=none

  • 旧文件如下所示:

    [root@network ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp0s3 | grep BOOTPROTO
    BOOTPROTO=dhcp
    
  • 现在新文件如下所示:

    [root@network ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp0s3 | grep -i BOOTPROTO
    BOOTPROTO=none
    
  • 重新启动主机/虚拟机或启动网络服务。

  • 这将解决这个问题。

相关内容