问题描述
我有Ubuntu的服务器12.04安装,所以我没有GUI。当我执行命令ifconfig时,我无法找到我的内部IP地址。它说inet addr: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)
这里是etc /network /interfaces的内容:
#环回网络接口自动环回
主网络接口auto eth0 iface eth0 inet dhcp
如果有人可以为我编辑,etc /network /interfaces的内容应该是分开的。
主机askubuntu.com的输出是:
;;连接超时;没有服务器可以达成。
几个月前,我创建了自己的云端和webmin,并且使用它们一个月没有问题。我认为电力在2个月前的某一天就关闭了,而且我从未将服务器重新启动到昨天。我没有做过任何会影响互联网设置的事情所以我不知道为什么它不工作了。就我的网络拓扑而言,我有一个用于PC的pci-e网卡。以太网线路从网卡到交换机,然后从那里到调制解调器/路由器。
最佳解决办法
这些命令会告诉你所有的网络信息
ifconfig -a
要么
ip addr show
如果你说它只给你127.0.0.1,那么有两个选择:
-
您的网卡未连接或系统无法识别
-
您的网络DHCP服务器没有运行或未连接
次佳解决办法
这是我目前推荐的:
ip route get 8.8.8.8 | awk '{print $NF; exit}'
该命令的优点是你不必知道你正在使用哪个接口(eth0?eth1?或者wlan0?),你不必过滤掉本地主机地址,Docker地址或VPN隧道等。并且您将始终获得目前用于互联网连接的IP地址(当您连接以太网和WiFi或通过VPN等时很重要)。
这不仅会测试您是否在某个接口上配置了正确的IP(例如解析ifconfig
的输出),而且还会配置路由表以正确使用它。
我在this answer中通过Collin Anderson发现了这个想法。
我在my scripts collection on GitHub的internalip脚本中使用它,您可以使用它进行安装:
wget https://rawgit.com/rsp/scripts/master/internalip
chmod a+x internalip
并用作:
internalip
要么:
internalip TARGET
并且您将获得将用于连接目标IP地址的IP地址。默认目标是8.8.8.8
,它是Google’s public DNS resolver,是Internet的良好默认值。
但是如果你使用不同的IP来运行它:
internalip 127.2.3.4
然后你会得到:
127.0.0.1
因为这是您的IP地址,它将用于在回送接口上连接127.2.3.4。当您的目标位于LAN,VPN或其他特殊网络时,这很有用,在这种情况下,其他IP可用于连接,而不是用于连接Internet的默认IP。
外部IP
要检查您的外部IP地址(互联网上的服务器在连接时看到的IP地址 – 可能与此处所述的内部IP地址不同),请参阅this answer。
第三种解决办法
hostname -I
这会给你一个没有任何额外信息的ip地址。
第四种办法
我认为值得一提的是,运行ifconfig和-a选项将显示所有接口或不接口是否具有IP。
单独运行ifconfig,将仅显示分配有IP的接口。
这是一个很好的技巧,你可以使用Perl来显示IP。
# ifconfig | perl -nle'/dr:(\S+)/ && print $1'
192.168.1.100
127.0.0.1
您的网卡被系统识别,为什么它显示eth0和eth1
这是一种将IP分配给接口的快速方法,相应地使用有效的IP /子网。
ifconfig eth0 192.168.1.200/24 up
那么我们需要添加一条默认路由
route add default gw 192.168.1.1
最好,
第五种办法
该命令将显示单个设备的所有IP地址:
dev=eth0
ip addr show $dev | awk '/inet/ {print $2}' | cut -d/ -f1
它将打印一行或两行输出。第一个是inet /IPv4地址,另一个是inet6 /IPv6,如果你的系统被配置为支持这个。
第六种办法
如果ifconfig
命令没有显示IP地址,则可以通过GUI找到Ubuntu机器的IP地址。请按照以下步骤操作:
单击通知区域中的网络图标,然后单击连接信息。
这会弹出一个窗口,其中包含一些信息,包括IP地址。