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 地址。
kam*_*mil 247
这些命令会告诉你所有的网络信息
ip add
Run Code Online (Sandbox Code Playgroud)
或者
ifconfig -a
Run Code Online (Sandbox Code Playgroud)
如果如你所说,它只给你 127.0.0.1 那么有两种选择:
您的网卡未连接或系统无法识别
您的网络 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 地址(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)
最好的事物,
此命令将显示单个设备的所有 IP 地址:
dev=eth0
ip addr show $dev | awk '/inet/ {print $2}' | cut -d/ -f1
Run Code Online (Sandbox Code Playgroud)
它将打印一两行输出。第一个是 inet/IPv4 地址,另一个是 inet6/IPv6,如果您的系统配置为支持此地址。