내부 IP 주소는 어떻게 찾습니까?


208

Ubuntu 서버 12.04가 설치되어 있으므로 GUI가 없습니다. ifconfig 명령을 수행하면 internl 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 개월 전 어느 날 전원이 꺼 졌다고 생각했는데 어제까지 서버를 다시 켜지 않았습니다. 인터넷 설정에 영향을 줄 수있는 작업을 수행하지 않았으므로 더 이상 작동하지 않는 이유를 모르겠습니다. 네트워크 토폴로지가 진행되는 한 PC 용 pci-e 네트워크 카드가 있습니다. 이더넷 회선은 네트워크 카드에서 스위치로 이동 한 다음 거기서 모뎀 / 라우터로 이동합니다.


1
@AvatarParto 공용 액세스에 직면 한 인터페이스를위한 것입니다.이 질문은 내부 네트워크에 관한 것입니다.
Bruno Pereira

호기심 /etc/network/interfaces에서 그 안에 무엇이 있습니까?
Powerlord

change directory 명령을 사용하는 방법을 알고 있지만 파일을 한 번 나열하는 방법을 모른다면 어떻게해야합니까?
Cam Jones

ls디렉토리에 파일을 나열합니다. ls -l자세한 목록을 제공합니다. 특정 디렉토리의 내용을 나열하려면 ls -l /etc/network. 디렉토리로 변경하고 내용을 나열합니다 cd /etc/network ;ls -l. 의 내용을 읽으려면 etc/network/interfaces(이것은 파일입니다) sudo pico /etc/network/interfaces. ( pico가벼운 텍스트 편집기-읽기 및 기본 편집에 적합하며,보다 덜 위협적 vi입니다.)
douggro

답변:


205

이 명령은 모든 네트워크 정보를 알려줍니다

ip add

또는

ifconfig -a

말했듯이 127.0.0.1 만 제공하면 두 가지 옵션이 있습니다.

  1. 시스템에서 네트워크 카드가 연결되지 않았거나 인식되지 않습니다

  2. 네트워크 DHCP 서버가 작동하지 않거나 연결되어 있지 않습니다


로그인하면 몇 가지 업그레이드 또는 업데이트가 있다고 알려주므로 공식 우분투 웹 사이트에 업데이트가 있음을 알리기 위해 인터넷에 연결되어 있다고 생각합니다.
Cam Jones

askubuntu.com을 열려고하고 인쇄하십시오 @Skateguy 모든 ifconfig를 -a
카밀

나는 GUI가 없다. 나는 그것을 타이핑하려고한다.
Cam Jones

1
두 가지 옵션이 제시하는 질문에 어떻게 대답 할 수 있습니까?
Cam Jones

1
먼저ip 옵션 을 제안하고 나중에 ( 더 이상 사용되지 않음 ) 제안합니다 . ifconfig
Campa

212
hostname -I

이것은 추가 정보없이 IP 주소를 제공합니다.


16
저건 완벽 해. 너무나 많은 복잡한 (그러나 나쁘지는 않은) 답변.이 답변은 간단합니다.
user1003916

3
정답 .. :)
john400

2
매뉴얼 페이지에 따르면`-I, --all-ip-addresses 호스트의 모든 네트워크 주소를 표시합니다. 이 옵션은 모든 네트워크 인터페이스에서 구성된 모든 주소를 열거합니다. 루프백 인터페이스와 IPv6 링크 로컬 주소는 생략되어 있습니다. 따라서 이더넷이나 lxd 서버로 사용하는 경우 연결된 네트워크의 IP 주소와 컴퓨터의 IP를 제공합니다. 내 경우에는 lxd가 있기 때문에 두 개의 주소를 제공합니다 : 192.168.0.78 및 10.0.3.1
Sergiy Kolodyazhnyy

6
네. 내 경우에는 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 컨테이너를 실행하기 때문에 더 나쁩니다.)
Alex

4
원시 도커 우분투 이미지에서 다른 솔루션이 작동하지 않기 때문에
공감

185

이것이 현재 권장하는 사항입니다.

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

이 명령의 장점은 사용중인 인터페이스 (eth0? eth1? 또는 wlan0?)를 알 필요가 없으며 로컬 호스트 주소, Docker 주소 또는 VPN 터널 등을 필터링 할 필요가 없다는 것입니다. 그리고 현재 인터넷 연결현재 사용되는 IP 주소를 항상 얻을 수 있습니다 (예 : 이더넷과 Wi-Fi 또는 VPN 등을 통해 연결된 경우 중요).

이는 일부 인터페이스에 올바른 IP가 구성되어 있는지 (예 :의 출력 구문 분석과 같이 ifconfig) 올바르게 라우팅 테이블을 구성했는지 테스트 합니다.

나는에서 그 아이디어 발견 이 대답 하여 콜린 앤더슨 .

GitHub의 scripts 컬렉션에 있는 internalip 스크립트에서 사용하며 다음과 같이 설치할 수 있습니다.

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

다음과 같이 사용하십시오.

internalip

또는:

internalip TARGET

TARGET IP 주소와 연결 하는 데 사용되는 IP 주소를 얻게됩니다 . 기본 목표는 8.8.8.8구글의 공개 DNS 리졸버 와 인터넷에 대한 좋은 기본.

그러나 다른 IP로 실행하는 경우 :

internalip 127.2.3.4

그럼 당신은 얻을 것이다 :

127.0.0.1

이것이 루프백 인터페이스에서 127.2.3.4와 연결 하는 데 사용되는 IP 주소이기 때문입니다 . 대상이 LAN, VPN 또는 기타 특수 네트워크에있을 때 유용합니다.이 경우 인터넷에 연결하기 위해 기본 IP 이외의 다른 IP를 연결에 사용할 수 있습니다.

외부 IP

외부 IP 주소 를 확인하려면 (인터넷에있는 서버가 서버에 연결할 때 표시되며 여기에 설명 된 내부 IP 주소와 다를 수 있음) 이 답변을 참조하십시오 .


1
이것은 훌륭한 답변입니다, 감사합니다! 나에게 너무 많은 두통을 저장했습니다! : D
user65165

이것은 유용한 트릭이지만 OP는 내부 IP에 대해 묻기 때문에 8.8.8.8로 라우팅 할 수 있다고 가정하는 것이 안전하지 않을 수 있습니다.
mc0e

@ mc0e 좋은 지적입니다. 그래서 내 스크립트 가 다른 IP에 대해 선택적 인수를 취하는 이유 8.8.8.8는 기본값입니다. 내 대답에서 나는 127.2.3.4예로서 사용 했다. 인트라넷 또는 VPN에서도 일부 IP를 사용할 수 있습니다. 요점은 일반적으로 하나의 내부 IP 주소는 없지만 다른 대상에 사용되는 다른 주소는 거의 없다는 것입니다. 이 방법으로 주어진 대상에 연결하는 데 실제로 사용되는 것을 찾을 수 있습니다.
rsp

1
알다시피, 이것은 Mac에서 외부 IP를 제공합니다.
OZZIE

19

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

베스트,


1
이 방법을 시도해 볼 수 있지만 유효한 IP, 서브넷 및 유효한 기본 경로를 찾는 방법과 같이 이해하기 위해서는 조금 더 세분화해야합니다.
Cam Jones

이것은 192.168.1.0/24의 서브넷을 가진 라우터 뒤에 있다면 IP ex를 핑 (ping) 할 수 있음을 의미하는 네트워크 인터페이스에 대한 고정 IP 할당입니다. 192.168.1.200 응답이 없으면 헤드로 가서 ifconfig interface_name IP_ADDRESS / MASK up을 사용하십시오. IP를 할당 한 후 기본 gw를 추가해야합니다.
user1007727

8

이 명령은 단일 장치의 모든 IP 주소를 표시합니다.

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

한두 줄의 출력을 인쇄합니다. 시스템이이를 지원하도록 구성된 경우 첫 번째 주소는 inet / IPv4 주소이고 다른 주소는 inet6 / IPv6입니다.


6

경우, ifconfigIP 주소를 표시하지 않은 명령은 GUI를 통해 우분투 시스템의 IP 주소를 찾을 수있는 매우 간단하고 쉬운 방법이있다. 아래 단계를 따르십시오.

클릭 네트워크 아이콘을 알림 영역에 클릭 연결 정보 . 네트워크 아이콘 옵션

IP 주소를 포함한 일부 정보가있는 창이 나타납니다. IP 주소 정보


1

이 여기에 좋은 답변을 많이가 이미 선택할 수있는,하지만 내가 지적 거라고 생각 facter 보통이지만, 반드시 시스템에 대한 여러 가지 사실을 수집하기 위해 꼭두각시로 사용되지 않습니다. facter의 가장 큰 장점은 당신에게 모든 조작을 절약 할 좋은 깨끗한 출력 준다이다 grep, sed, awk, cut, perl그 다음을 알고있는 경우 등 당신이 관심있는 인터페이스를 말하지 않을됩니다 만, 다음은 정리할 다른 문제없이 IP를 제공합니다.

facter ipaddress_eth0 

1

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 번째 열 / 워드입니다. 나머지는 선택한 도구를 통한 간단한 파싱 연습 입니다. 여기, 나는 파이썬을 사용하고 있습니다 :

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

와이어 샤크

네트워크 분석 도구 사용에 익숙하다면 IP 주소를 얻으려면 브라우저 캐시를 지우고 특정 인터페이스에서 Wireshark 캡처를 시작하고 GET전송중인 http 패킷을 찾으면됩니다 . 대상 열에 IP 주소가 표시됩니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.