我如何找到我的内部IP地址?
我安装了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的内容:
# The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet dhcp
如果有人可以为我编辑这个,etc / network / interfaces的内容应该在单独的行上。
主机askubuntu.com的输出是:
;; connection timed out; no servers could be reached.
几个月前我设置了owncloud和webmin,并且使用它们一个月没有任何问题。 我认为电源在2个月前的某一天发生了变化,直到昨天我才重新开启服务器。 我没有做任何会影响互联网设置的事情所以我不确定为什么它不再起作用了。 就我的网络拓扑而言,我有一台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?),您不必过滤掉localhost地址,Docker地址或VPN隧道等。并且您将始终获得当前用于Internet连接的IP地址 (例如,当您通过以太网和wifi连接或通过VPN等连接时很重要)。
这将不仅测试您在某个接口上配置了正确的IP(例如解析ifconfig
的输出),而且还测试您已将路由表配置为正确使用它。
Collin Anderson在这个答案中找到了这个想法。
我在GitHub上的脚本集合中的internalip脚本中使用它,您可以使用以下命令安装:
wget https://rawgit.com/rsp/scripts/master/internalip chmod a+x internalip
并用作:
internalip
要么:
internalip TARGET
并且您将获得用于连接TARGET IP地址的IP地址 。 默认目标是8.8.8.8
,这是Google的公共DNS解析程序 ,是Internet的良好默认设置。
但是如果你使用不同的IP运行它:
internalip 127.2.3.4
然后你会得到:
127.0.0.1
因为这是您在回送接口上用于连接127.2.3.4的 IP地址。 当您的目标位于LAN,VPN或其他特殊网络上时,此function非常有用,在这种情况下,某些其他IP可用于连接,而非默认IP用于连接Internet。
外部IP
要检查外部 IP地址(Internet上的服务器在连接到它们时看到的地址 – 可能与此处描述的内部IP地址不同),请参阅此答案 。
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地址。
这里有很多好的答案可供选择,但我想我会指出通常的,但不一定与木偶一起收集有关系统的各种事实。 facter的主要优点是它提供了很好的干净输出,可以节省你使用grep
, sed
, awk
, cut
, perl
等所有操作。它不会告诉你你感兴趣的接口,但如果你知道,然后以下给你IP没有其他残骸清理:
facter ipaddress_eth0
ip命令
这是ip addr
方式的变体。
ip
有-o
选项,允许将所有信息放在单行上 – 这对于使用awk
或perl
等工具进行解析非常有用。 结合-4
选项,我们只会看到IPv4地址。 因此,输出将是这样的(注意 – 用你想要检查的接口替换wlan7):
$ ip -4 -o addr show wlan7 3: wlan7 inet 192.168.0.78/24 brd 192.168.0.255 scope global dynamic wlan7\ valid_lft 85654sec preferred_lft 85654sec
如您所见,IP地址是输出中的第4列/字。 其余的,通过您选择的工具进行简单的解析练习 。 在这里,我正在使用python:
ip -4 -o addr show wlan7 | python -c "import sys;print sys.stdin.readlines()[0].split()[3]"
同样的事情,只有这里的字符串<<<
和命令替换$()
python -c "import sys;print sys.stdin.readlines()[0].split()[3]" <<< $(ip -4 -o addr show wlan7)
就个人而言,我在~/.bashrc
中将其保存为一个很好的函数,因此输入的次数减少了。
wlan_ip() { ip -4 -o addr show wlan7 | python -c "import sys;print sys.stdin.readlines()[0].split()[3]" }
Perl和Ruby的版本有点短:
$ ip -4 -o addr show wlan7 | perl -lane 'print $F[3]' 192.168.0.78/24 $ ip -4 -o addr show wlan7 | ruby -n -e 'print $_.split()[3]' 192.168.0.78/24
Wireshark的
如果您熟悉使用网络分析工具,您可能知道要获取您的IP地址,您需要做的就是清除浏览器缓存,在特定接口上启动Wireshark捕获,并查找正在传输的HTTP GET
数据包。 目标列将显示您的IP地址