Câu hỏi Làm cách nào để tìm địa chỉ IP nội bộ của tôi?


Tôi đã cài đặt máy chủ Ubuntu 12.04, vì vậy tôi không có GUI. Khi tôi làm lệnh ifconfig, tôi không thể tìm thấy địa chỉ IP internl của mình. Nó nói inet addr: 127.0.0.1.

Đây là đầu ra của 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)

dưới đây là nội dung của mạng / etc / interfaces:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

Nếu ai đó có thể chỉnh sửa điều này cho tôi, nội dung của etc / network / interfaces phải nằm trên các dòng riêng biệt.

Đầu ra của hostubuntu.com là:

;; connection timed out; no servers could be reached.

Tôi đã thiết lập owncloud và webmin một vài tháng trước và sử dụng chúng trong một tháng mà không có vấn đề gì. Tôi nghĩ rằng sức mạnh đã tắt một ngày cách đây 2 tháng và tôi không bao giờ quay trở lại máy chủ cho đến ngày hôm qua. Tôi đã không làm bất cứ điều gì mà có thể đã ảnh hưởng đến thiết lập internet Vì vậy, tôi không chắc chắn lý do tại sao nó không hoạt động nữa. Theo như topo mạng của tôi đi, tôi có một card mạng pci-e cho máy tính. Dòng ethernet chuyển từ card mạng sang switch, và sau đó đến modem / router từ đó.


159
2018-03-07 13:20


gốc


@AvatarParto Đó là dành cho các giao diện phải đối mặt với truy cập công cộng, câu hỏi này là về mạng nội bộ ... - Bruno Pereira
Ngoài sự tò mò, điều gì /etc/network/interfaces có trong nó? - Powerlord
Tôi biết cách sử dụng lệnh thư mục thay đổi, nhưng tôi không biết cách liệt kê các tệp một lần ở đó, tôi sẽ làm như thế nào? - Cam Jones
ls sẽ liệt kê các tập tin trong một thư mục. ls -l sẽ cung cấp một danh sách chi tiết. Để liệt kê nội dung của một thư mục cụ thể, ls -l /etc/network. Để thay đổi thành nội dung thư mục và danh sách cd /etc/network ;ls -l. Để đọc nội dung của etc/network/interfaces (đây là một tập tin) sudo pico /etc/network/interfaces. (pico là trình soạn thảo văn bản nhẹ - tốt cho việc đọc và chỉnh sửa cơ bản và ít đáng sợ hơn vi.) - douggro


Các câu trả lời:


Các lệnh này sẽ cho bạn biết tất cả thông tin mạng

ifconfig -a

hoặc là

ip addr show

Nếu như bạn nói nó chỉ cung cấp cho bạn 127.0.0.1 thì có hai lựa chọn:

  1. Thẻ mạng của bạn không được đính kèm hoặc không được hệ thống nhận dạng

  2. Máy chủ DHCP mạng của bạn không được chạy hoặc không được kết nối


159
2018-03-07 13:32



khi tôi đăng nhập nó cho tôi biết có một vài nâng cấp hoặc cập nhật, vì vậy tôi cho rằng nó phải nói chuyện với trang web chính thức ubuntu để biết nó có cập nhật, Vì vậy, tôi nghĩ rằng internet của tôi đang làm việc. - Cam Jones
@Skateguy cố gắng mở askubuntu.com và vui lòng in tất cả ifconfig -a - kamil
Tôi không có GUI, tôi sắp gõ nó ra mặc dù. - Cam Jones
Làm thế nào tôi có thể trả lời các câu hỏi mà hai lựa chọn của bạn đặt ra? - Cam Jones
@Skateguy Đầu tiên có vẻ như bạn không có máy chủ dhcp và bạn sẽ phải đặt ip theo cách thủ công. bạn có thể cho chúng tôi biết cấu trúc liên kết mạng của bạn không, bạn đã kết nối với internet như thế nào. và vui lòng đăng đầu ra của lệnh sau trong terminal của bạn: host askubuntu.com - kamil


Đây là những gì tôi hiện khuyên bạn nên:

ip route get 8.8.8.8 | awk '{print $NF; exit}'

Ưu điểm của lệnh đó là bạn không cần phải biết giao diện nào bạn đang sử dụng (eth0? Eth1? Hoặc có thể wlan0?), Bạn không phải lọc địa chỉ localhost hoặc địa chỉ Docker hoặc đường hầm VPN, v.v. và bạn sẽ luôn nhận được địa chỉ IP hiện đang được sử dụng cho kết nối Internet tại thời điểm đó (quan trọng khi bạn được kết nối với cả ethernet và wifi hoặc qua VPN, v.v.).

Điều này sẽ kiểm tra không chỉ rằng bạn có một địa chỉ IP chính xác được cấu hình trên một số giao diện (như với phân tích cú pháp đầu ra của ifconfig) nhưng bạn cũng có bảng định tuyến được cấu hình để sử dụng nó một cách chính xác.

Tôi đã tìm thấy ý tưởng đó câu trả lời này bởi Collin Anderson.

Tôi sử dụng nó trong nội bộ kịch bản trong bộ sưu tập tập lệnh của tôi trên GitHub, bạn có thể cài đặt bằng:

wget https://rawgit.com/rsp/scripts/master/internalip
chmod a+x internalip

và sử dụng như:

internalip

hoặc là:

internalip TARGET

và bạn sẽ nhận được địa chỉ IP sẽ được sử dụng để kết nối với địa chỉ IP TARGET. Mục tiêu mặc định là 8.8.8.8 đó là Trình phân giải DNS công khai của Google và mặc định tốt cho Internet.

Nhưng nếu bạn chạy nó với một IP khác:

internalip 127.2.3.4

Sau đó, bạn sẽ nhận được:

127.0.0.1

bởi vì đó là địa chỉ IP của bạn sẽ được sử dụng để kết nối với 127.2.3.4 trên giao diện loopback. Nó hữu ích khi mục tiêu của bạn là trên mạng LAN, VPN hoặc mạng đặc biệt khác, trong trường hợp đó một số IP khác có thể được sử dụng cho các kết nối hơn IP mặc định để truy cập Internet.

IP bên ngoài

Để kiểm tra bên ngoài Địa chỉ IP (địa chỉ mà máy chủ trên Internet nhìn thấy khi bạn kết nối với chúng - có thể khác với địa chỉ IP nội bộ được mô tả ở đây) xem câu trả lời này.


166
2018-04-03 02:49



đây là một câu trả lời tuyệt vời, cảm ơn! đã cứu tôi rất nhiều đau đầu! : D - user65165
Đây là một thủ thuật hữu ích, nhưng OP đã hỏi về một IP nội bộ, do đó, imay không được an toàn để giả định rằng nó có thể định tuyến đến 8.8.8.8. - mc0e
@ mc0e Điểm tốt. Đó là lý do kịch bản của tôi lấy một đối số tùy chọn cho một số IP khác - 8.8.8.8 chỉ là mặc định. Trong câu trả lời của tôi, tôi đã sử dụng 127.2.3.4 làm ví dụ. Bạn có thể sử dụng một số IP trên mạng nội bộ của bạn hoặc trên VPN. Vấn đề là bạn thường không có một địa chỉ IP nội bộ nhưng ít địa chỉ khác nhau được sử dụng cho các mục tiêu khác nhau. Bằng cách này bạn có thể tìm thấy một trong đó là thực sự được sử dụng cho các kết nối đến một mục tiêu nhất định. - rsp
Bạn biết đấy, điều này cho phép IP bên ngoài trên Mac. - OZZIE


hostname -I

Điều này sẽ cung cấp cho bạn địa chỉ IP chỉ mà không cần thêm bất kỳ thông tin nào.


134
2017-08-25 06:29



Đó là hoàn hảo. Vì vậy, nhiều câu trả lời quá phức tạp (nhưng không phải là xấu) .. câu trả lời này chỉ đơn giản là chết. - user1003916
Câu trả lời hoàn hảo..:) - john400
Theo trang người dùng: `-I, --all-ip-addresses Hiển thị tất cả địa chỉ mạng của máy chủ. Tùy chọn này liệt kê tất cả các địa chỉ được cấu hình trên tất cả các giao diện mạng. Giao diện loopback và địa chỉ liên kết IPv6 được bỏ qua.` Vì vậy, điều này sẽ cung cấp cho bạn địa chỉ ip trên mạng mà bạn kết nối, nhưng cũng là IP của máy nếu bạn đang sử dụng nó như máy chủ ethernet hoặc lxd. Trong trường hợp của tôi, nó cung cấp hai địa chỉ vì tôi có lxd: 192.168.0.78 và 10.0.3.1 - Sergiy Kolodyazhnyy
Vâng. Trong trường hợp của tôi nó nặng hơn 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 vì tôi đang chạy một số vùng chứa Docker;) - Alex
Upvote vì các giải pháp khác không hoạt động, v.d. trên hình ảnh docker ubuntu thô - noonex


Tôi nghĩ rằng nó có giá trị đề cập rằng chạy ifconfig cùng với -a tùy chọn sẽ hiển thị tất cả các giao diện wether hay không giao diện có một IP.

chạy ifconfig một mình, sẽ chỉ hiển thị các giao diện với các IP được gán.

Đây là một mẹo nhỏ bạn có thể sử dụng để chỉ hiển thị IP bằng Perl.

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

Thẻ mạng của bạn được hệ thống nhận ra, đó là lý do tại sao nó hiển thị eth0 và eth1

đây là một cách nhanh chóng để gán IP cho giao diện của bạn, sử dụng IP / Subnet hợp lệ cho phù hợp.

 ifconfig eth0 192.168.1.200/24 up 

thì chúng ta cần thêm một tuyến đường mặc định

route add default gw 192.168.1.1

Tốt,


18
2018-03-07 21:17



Tôi sẽ thử phương pháp này nhưng bạn sẽ phải phá vỡ nó xuống một chút để tôi hiểu nó, như làm thế nào để tìm hoặc biết một IP hợp lệ, mạng con và một tuyến đường mặc định hợp lệ. - Cam Jones
đây là một giao IP tĩnh cho giao diện mạng của bạn, có nghĩa là nếu bạn đang ở phía sau một bộ định tuyến với subnet 192.168.1.0/24 thì bạn có thể ping một ip cũ. 192.168.1.200 và nếu bạn không nhận được phản hồi, sau đó đi đầu và sử dụng ifconfig interface_name IP_ADDRESS / MASK up gw mặc định của bạn cần phải được thêm sau khi gán IP. - user1007727


Lệnh này sẽ hiển thị tất cả các địa chỉ IP cho một thiết bị duy nhất:

dev=eth0
ip addr show $dev | awk '/inet/ {print $2}' | cut -d/ -f1

Nó sẽ in một hoặc hai dòng đầu ra. Đầu tiên là địa chỉ inet / IPv4 và cái còn lại là inet6 / IPv6 nếu hệ thống của bạn được cấu hình để hỗ trợ điều này.


8
2017-10-24 14:14





Trong trường hợp, ifconfig lệnh không hiển thị địa chỉ IP, có một cách rất đơn giản và dễ dàng để tìm ra địa chỉ IP của máy Ubuntu thông qua GUI. Làm theo các bước dưới đây:

Nhấn vào biểu tượng mạng trong vùng thông báo và nhấp Thông tin kết nối. Network icon options

Điều này sẽ trả về một cửa sổ có một số thông tin, bao gồm địa chỉ IP. IP address information


5
2017-09-24 13:09





Có rất nhiều câu trả lời hay ở đây để lựa chọn, nhưng tôi nghĩ tôi sẽ chỉ ra mặt thường là, nhưng không nhất thiết được sử dụng với con rối để thu thập nhiều sự kiện khác nhau về hệ thống. Ưu điểm chính của facter là nó cung cấp đầu ra sạch đẹp giúp bạn tiết kiệm tất cả các thao tác với grep, sed, awk, cut, perl, vv Nó sẽ không cho bạn biết giao diện nào bạn quan tâm, nhưng nếu bạn biết điều đó, thì sau đây sẽ cung cấp cho bạn IP mà không có các hành trình dọn dẹp khác:

facter ipaddress_eth0 

1
2017-11-28 15:11





lệnh ip

Đây là một biến thể trên ip addr đường.

ip có -o tùy chọn cho phép đặt tất cả thông tin trên một dòng - điều này hữu ích khi phân tích cú pháp bằng các công cụ như awk hoặc là perl. Kết hợp với -4 tùy chọn, chúng tôi sẽ chỉ thấy địa chỉ IPv4. Vì vậy, đầu ra sẽ là một cái gì đó như thế này (lưu ý - thay thế wlan7 với giao diện bạn muốn kiểm tra):

$ 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

Như bạn có thể thấy, địa chỉ IP là cột / từ thứ 4 trong đầu ra. Phần còn lại là bài tập phân tích cú pháp đơn giản thông qua công cụ bạn chọn. Ở đây, tôi đang sử dụng python:

ip -4 -o addr show wlan7 | python -c "import sys;print sys.stdin.readlines()[0].split()[3]" 

Điều tương tự, chỉ với chuỗi ở đây <<< và thay thế lệnh $()

python -c "import sys;print sys.stdin.readlines()[0].split()[3]"  <<< $(ip -4 -o addr show wlan7)

Cá nhân, tôi đã lưu nó dưới dạng chức năng tốt đẹp trong ~/.bashrc quá ít việc gõ được thực hiện.

wlan_ip() {
    ip -4 -o addr show wlan7 | python -c "import sys;print sys.stdin.readlines()[0].split()[3]" 
} 

Phiên bản của Perl và Ruby ngắn hơn một chút:

$ 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

Nếu bạn quen với việc sử dụng các công cụ phân tích mạng, bạn có thể biết rằng để có được địa chỉ ip, tất cả những gì bạn cần làm là xóa bộ nhớ cache của trình duyệt, bắt đầu chụp Wireshark trên giao diện cụ thể và tìm kiếm http GET các gói tin được truyền đi. Cột đích sẽ hiển thị địa chỉ ip của bạn


1
2017-09-04 18:32