如何找到我的内部IP地址?

Cam*_*nes 278 networking

我安装了 Ubuntu 服务器 12.04,所以我没有 GUI。当我执行 ifconfig 命令时,我找不到我的内部 IP 地址。它说 inet 地址:127.0.0.1。

这是输出ifconfig -a

eth0   link encap:Ethernet  HWaddr 00:06:4f:4a:66:f0
    BROADCAST MULTICAST  MTU:1500  Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

eth1   link encap:Ethernet  HWaddr 00:16:ec:05:c8:9c 
    BROADCAST MULTICAST  MTU:1500  Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo     Link encap:Local Loopback
    inet addr 127.0.0.1  Mask:255.0.0.0
    inet6 addr:  ::1/128 Scope:Host
    UP LOOPBACK RUNNING MTU:65536  Metric:1
    RX packets:1800 errors:0 dropped:0 overruns:0 frame:0
    Tx packets:1800 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:143896 (143.b KB)  TX bytes:143896 (143.8 KB)
Run Code Online (Sandbox Code Playgroud)

这里是 etc/network/interfaces 的内容:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp
Run Code Online (Sandbox Code Playgroud)

如果有人可以为我编辑它,etc/network/interfaces 的内容应该在不同的行上。

主机 askubuntu.com 的输出是:

;; connection timed out; no servers could be reached.
Run Code Online (Sandbox Code Playgroud)

几个月前我设置了 owncloud 和 webmin,并且使用它们一个月没有任何问题。我认为电源在 2 个月前的一天断电,直到昨天我才重新打开服务器。我没有做任何会影响互联网设置的事情所以我不知道为什么它不再起作用了。就我的网络拓扑而言,我有一个用于 PC 的 pci-e 网卡。以太网线从网卡连接到交换机,然后从那里连接到调制解调器/路由器。

小智 347

hostname -I
Run Code Online (Sandbox Code Playgroud)

这将为您提供没有任何额外信息的 IP 地址。

  • 那很完美。这么多过于复杂(但还不错)的答案……这个答案简直太简单了。 (24认同)
  • 是的。就我而言,它更糟糕的是 `10.0.2.15 172.18.0.1 172.17.0.1 172.20.0.1 172.21.0.1 172.22.0.1 172.19.0.1` 因为我正在运行一些 Docker 容器;) (10认同)
  • Upvote 因为其他解决方案不起作用,例如在原始 docker ubuntu 图像上 (4认同)
  • 完美的答案..:) (3认同)
  • 根据手册页:` -I, --all-ip-addresses 显示主机的所有网络地址。此选项枚举所有网络接口上的所有配置地址。环回接口和 IPv6 链路本地地址被省略。` 因此,这将为您提供所连接网络上的 IP 地址,如果您将其用作以太网或 lxd 服务器,还会提供您机器的 IP。就我而言,它提供了两个地址,因为我有 lxd:192.168.0.78 和 10.0.3.1 (3认同)
  • 如果您的最终组件小于 3 位十进制数字,它似乎会在末尾添加一个额外的空格。你可以用`|来修剪它 但是,cut -d' ' -f1`。 (3认同)
  • 我建议`主机名-I | awk '{print $1}'` (2认同)

kam*_*mil 247

这些命令会告诉你所有的网络信息

ip add
Run Code Online (Sandbox Code Playgroud)

或者

ifconfig -a
Run Code Online (Sandbox Code Playgroud)

如果如你所说,它只给你 127.0.0.1 那么有两种选择:

  1. 您的网卡未连接或系统无法识别

  2. 您的网络 DHCP 服务器未运行或未连接


rsp*_*rsp 192

这是我目前推荐的:

ip route get 8.8.8.8 | awk '{print $NF; exit}'
Run Code Online (Sandbox Code Playgroud)

该命令的优点是您不必知道您使用的是哪个接口(eth0?eth1?或者 wlan0?),您不必过滤掉 localhost 地址、Docker 地址或 VPN 隧道等。并且您将始终获得当前用于 Internet 连接的 IP 地址(例如,当您同时连接以太网和 wifi 或通过 VPN 等时,这一点很重要)。

这不仅会测试您是否在某个接口上配置了正确的 IP(例如解析 的输出ifconfig),还会测试您是否已将路由表配置为正确使用它。

我发现这个想法此答案科林·安德森

在 GitHub 上的脚本集合中的internalip脚本中使用它,您可以使用以下命令进行安装:

wget https://rawgit.com/rsp/scripts/master/internalip
chmod a+x internalip
Run Code Online (Sandbox Code Playgroud)

并用作:

internalip
Run Code Online (Sandbox Code Playgroud)

或者:

internalip TARGET
Run Code Online (Sandbox Code Playgroud)

您将获得用于连接目标 IP 地址的 IP 地址。缺省的目标是8.8.8.8这是谷歌的公共DNS解析器和良好的默认互联网。

但是,如果您使用不同的 IP 运行它:

internalip 127.2.3.4
Run Code Online (Sandbox Code Playgroud)

然后你会得到:

127.0.0.1
Run Code Online (Sandbox Code Playgroud)

因为这是您在环回接口上用于连接127.2.3.4 的IP 地址。当您的目标位于 LAN、VPN 或其他特殊网络上时,它很有用,在这种情况下,可以使用一些其他 IP 来进行连接,而不是访问 Internet 的默认 IP。

外部IP

要检查您的外部IP 地址(Internet 上的服务器在您连接到它们时看到的地址 - 可能与此处描述的内部 IP 地址不同),请参阅此答案


use*_*727 19

我认为值得一提的是,将 ifconfig 与 -a 选项一起运行将显示所有接口,无论该接口是否具有 IP。

单独运行 ifconfig,将仅显示分配了 IP 的接口。

这是一个很好的技巧,您可以使用它来使用 Perl 仅显示 IP。

# ifconfig | perl -nle'/dr:(\S+)/ && print $1'
192.168.1.100
127.0.0.1
Run Code Online (Sandbox Code Playgroud)

您的网卡已被系统识别,这就是为什么它显示 eth0 和 eth1

这是为您的接口分配 IP 的快速方法,相应地使用有效的 IP/子网。

 ifconfig eth0 192.168.1.200/24 up 
Run Code Online (Sandbox Code Playgroud)

然后我们需要添加一个默认路由

route add default gw 192.168.1.1
Run Code Online (Sandbox Code Playgroud)

最好的事物,


Aar*_*lla 9

此命令将显示单个设备的所有 IP 地址:

dev=eth0
ip addr show $dev | awk '/inet/ {print $2}' | cut -d/ -f1
Run Code Online (Sandbox Code Playgroud)

它将打印一两行输出。第一个是 inet/IPv4 地址,另一个是 inet6/IPv6,如果您的系统配置为支持此地址。


小智 8

如果ifconfig命令没有显示 IP 地址,有一种非常简单的方法可以通过 GUI 找出 Ubuntu 机器的 IP 地址。请按照以下步骤操作:

单击通知区域中的网络图标,然后单击连接信息网络图标选项

这将打开一个窗口,其中包含一些信息,包括 IP 地址。 IP地址信息