Linux / 네트워크 / IP 확인하는 방법

Linux에서 서버에 설정된 IP 주소는 ip address로 확인하는 것이 기본입니다. 실제 외부 통신에 선택될 IP를 알고 싶다면 ip route get 목적지의 src 값을 확인하고, 인터넷에서 보이는 공인 IP는 NAT·프록시·VPN 때문에 별도로 확인해야 합니다.

ip -brief address
ip route get 1.1.1.1

하나의 서버에는 루프백, 사설 IPv4, 공인 IPv4, 링크 로컬 IPv6, 전역 IPv6 등 여러 주소가 동시에 있을 수 있습니다. 따라서 “내 IP”가 무엇인지는 어떤 네트워크와 통신하려는지에 따라 달라집니다.

가장 빠르게 IP 주소 확인하기

모든 인터페이스를 간단히 보기

ip -brief address

-brief는 인터페이스 이름, 상태와 주소를 한 줄씩 보여 줍니다. lo는 자기 자신과 통신하는 루프백 인터페이스이고, 127.0.0.1과 ::1은 외부 장치에서 접속할 주소가 아닙니다.

IPv4 주소만 보기

ip -4 address show

전역 범위의 IPv4 주소만 좁히려면 다음과 같이 실행합니다.

ip -4 address show scope global

IPv6 주소만 보기

ip -6 address show

IPv6에는 링크 안에서만 유효한 scope link 주소와 더 넓은 범위에서 사용하는 scope global 주소가 함께 표시될 수 있습니다. 임시 개인정보 보호 주소도 여러 개 존재할 수 있으므로 주소의 scope, temporary, dynamic 같은 속성을 함께 확인하세요.

ip address 출력 읽는 방법

ip address show는 네트워크 인터페이스와 그 인터페이스에 연결된 프로토콜 주소를 자세히 표시합니다. 명령 문법과 주소 속성은 ip-address 매뉴얼에서 확인할 수 있습니다.

ip address show
표시 항목 의미 확인할 내용
UP 인터페이스가 관리상 활성화됨 실제 링크와 통신이 정상이라는 뜻과는 다릅니다.
LOWER_UP 장치의 하위 계층 링크가 올라옴 케이블·가상 링크 상태를 판단하는 단서입니다.
inet IPv4 주소와 프리픽스 길이 192.0.2.10/24처럼 표시됩니다.
inet6 IPv6 주소와 프리픽스 길이 링크 로컬과 전역 주소를 구분해야 합니다.
scope 주소가 유효한 범위 host, link, global 등이 있습니다.
valid_lft 주소의 유효 수명 동적 주소는 시간이 지나면 변경되거나 제거될 수 있습니다.

특정 네트워크 인터페이스 확인하기

인터페이스 이름 찾기

ip -brief link

환경에 따라 eth0, ens3, enp1s0, wlan0처럼 이름이 다릅니다. 문서나 스크립트에서 특정 이름을 추정하지 말고 실제 시스템의 목록을 먼저 확인하세요.

선택한 인터페이스의 주소 보기

ip address show dev ens3

ens3는 예시입니다. 실제 인터페이스 이름으로 바꾸어 사용합니다. IPv4 전역 주소만 필요하다면 조건을 함께 지정할 수 있습니다.

ip -4 address show dev ens3 scope global

실제 외부 통신에 사용할 IP 확인하기

경로 조회에서 src 확인하기

주소가 여러 개라면 목적지에 따라 선택되는 인터페이스와 출발지 주소가 달라질 수 있습니다. ip route get으로 특정 목적지에 대한 라우팅 결정을 조회하세요.

ip route get 1.1.1.1

출력의 dev는 사용할 인터페이스, via는 다음 게이트웨이, src는 커널이 선택한 출발지 주소입니다. 이 명령은 라우팅 테이블을 조회하며 대상 서버와 애플리케이션 연결이 성공한다는 것을 보장하지는 않습니다. 자세한 문법은 ip-route 매뉴얼에서 확인할 수 있습니다.

기본 게이트웨이 확인하기

ip route show default

기본 경로가 여러 개라면 metric, 정책 라우팅 규칙과 목적지에 따라 실제 경로가 달라질 수 있습니다. ip route get 결과를 함께 확인하는 이유입니다.

IPv6 경로 확인하기

ip -6 route get 2606:4700:4700::1111

IPv6가 설정되어 있어도 상위 라우터와 방화벽, DNS, 애플리케이션이 모두 IPv6 통신을 지원해야 실제 연결이 가능합니다.

hostname -I로 간단히 확인하기

일부 Linux 배포판에서는 다음 명령으로 호스트에 설정된 주소를 공백으로 구분해 출력할 수 있습니다.

hostname -I

짧고 편리하지만 인터페이스 이름, 프리픽스 길이, 주소 범위와 선택 경로를 보여 주지 않습니다. 여러 주소 중 어느 것이 실제 통신에 사용되는지 판단하려면 ip address와 ip route get을 사용하세요.

hostname -i는 이름 해석 결과를 보여 주므로 /etc/hosts나 DNS 설정의 영향을 받으며, 인터페이스에 직접 설정된 주소를 조회하는 것과 다릅니다. 비슷한 옵션을 혼동하지 않는 것이 중요합니다.

사설 IP와 공인 IP 구분하기

로컬 인터페이스 주소

ip address가 보여 주는 주소는 해당 Linux 네트워크 네임스페이스의 인터페이스에 설정된 주소입니다. 가정용 공유기나 클라우드 NAT 뒤에 있다면 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 범위의 사설 IPv4가 보일 수 있습니다.

인터넷에서 보이는 주소

NAT를 통과하면 외부 서비스에는 라우터, 클라우드 게이트웨이, VPN 또는 프록시의 공인 IP가 보일 수 있습니다. 이 주소는 로컬 명령만으로 확정할 수 없으며, 네트워크 장비나 클라우드 관리 화면에서 확인하는 방법이 가장 명확합니다.

외부 IP 확인 웹 서비스를 사용할 수도 있지만, 요청 시각과 출발지 주소가 해당 서비스에 전달됩니다. 신뢰할 수 있는 서비스를 선택하고 자동화 의존성, IPv4·IPv6 구분과 장애 가능성을 고려하세요.

포트 개방 여부는 별도 문제입니다

공인 IP를 안다고 해서 서버의 서비스가 인터넷에서 접근 가능한 것은 아닙니다. NAT 포트 전달, 클라우드 보안 그룹, 호스트 방화벽, 서비스의 수신 주소와 포트를 모두 확인해야 합니다.

ss -lntup

프로세스 정보 열람에는 관리자 권한이 필요할 수 있습니다. 서비스를 외부에 노출하기 전 인증, 암호화, 업데이트 상태와 최소 허용 범위를 검토하세요.

스크립트에서 IP 주소 다루기

JSON 출력 사용하기

문자열 위치에 의존한 grep 조합보다 ip의 JSON 출력을 구조적으로 처리하는 편이 안정적입니다.

ip -j -4 address show scope global

JSON 파서는 인터페이스와 addr_info 배열을 순회하고, 주소가 여러 개일 가능성을 처리해야 합니다. ip 버전에 따라 출력 필드가 달라질 수 있으므로 대상 배포판에서 검증하세요.

주소 하나를 무조건 고르지 않기

멀티홈 서버, VPN, 컨테이너, 임시 IPv6 주소 환경에서는 “첫 번째 주소”가 애플리케이션에 필요한 주소라는 보장이 없습니다. 목적지, 주소 패밀리, 인터페이스, scope 조건을 명확히 한 뒤 선택하세요.

컨테이너와 네트워크 네임스페이스

컨테이너 안에서 ip address를 실행하면 일반적으로 해당 컨테이너의 네트워크 네임스페이스 주소가 보입니다. 호스트의 인터페이스 주소나 외부 NAT 주소와 다를 수 있습니다.

호스트, 컨테이너, Kubernetes Pod, 서비스, 인그레스와 외부 로드밸런서는 서로 다른 주소를 가질 수 있습니다. 장애를 진단할 때는 명령을 어느 네임스페이스에서 실행했는지 기록하고, 통신 경로의 각 계층을 구분하세요.

ifconfig를 사용해도 되나요?

ifconfig는 오래된 문서에서 자주 보이지만 최근 Linux 배포판에서는 기본 설치되지 않을 수 있으며, 현대적인 네트워크 기능을 모두 표현하기 어렵습니다. 새 문서와 스크립트에서는 iproute2의 ip address, ip link, ip route를 우선 사용하는 것이 좋습니다.

기존 시스템 운영 절차가 ifconfig에 의존한다면 즉시 제거하기보다 출력과 동작 차이를 검증한 뒤 단계적으로 전환하세요.

자주 묻는 질문

127.0.0.1은 서버의 IP인가요?

서버 자기 자신을 가리키는 IPv4 루프백 주소입니다. 같은 네트워크의 다른 장치에서 이 주소로 서버에 접속할 수는 없습니다.

주소가 여러 개 나오면 어느 것을 사용해야 하나요?

접속하려는 상대와 경로에 따라 다릅니다. 같은 내부망에서는 해당 인터페이스의 사설 주소를, 특정 외부 목적지로 나갈 출발지 주소는 ip route get 목적지의 src를 확인하세요.

ip address에 공인 IP가 보이지 않는 이유는 무엇인가요?

서버가 NAT, 로드밸런서, VPN 또는 프록시 뒤에 있기 때문일 수 있습니다. 네트워크 장비나 클라우드 콘솔에서 외부 주소 매핑을 확인하세요.

IP 주소만 알면 SSH로 접속할 수 있나요?

아닙니다. SSH 서버가 적절한 주소와 포트에서 수신 중이어야 하고, 라우팅·NAT·방화벽·보안 그룹이 연결을 허용해야 하며, 유효한 인증 수단도 필요합니다.

정리

인터페이스 주소는 ip -brief address, IPv4·IPv6 상세 정보는 ip -4 address와 ip -6 address로 확인합니다. 목적지에 실제로 사용할 출발지 주소는 ip route get 목적지의 src 값이 더 정확한 단서입니다.

로컬 주소와 인터넷에 보이는 공인 주소는 NAT와 프록시 때문에 다를 수 있습니다. 항상 주소의 범위, 실행한 네트워크 네임스페이스와 실제 통신 목적지를 함께 명시하세요.

같은 카테고리의 다른 글
Linux / 명령어 / comm - 정렬된 두 파일의 공통·고유 행 비교

Linux / 명령어 / comm - 정렬된 두 파일의 공통·고유 행 비교

Linux comm 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / ps - 현재 프로세스 상태 확인

Linux / 명령어 / ps - 현재 프로세스 상태 확인

Linux ps 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / free - 메모리와 스왑 사용량 확인

Linux / 명령어 / free - 메모리와 스왑 사용량 확인

Linux free 명령어의 total, used, free, buff/cache, available과 Swap 항목을 설명합니다. 메모리 부족을 판단할 때 함께 확인할 지표와 주의점도 정리합니다.

Linux / 명령어 / passwd - 사용자 비밀번호 변경

Linux / 명령어 / passwd - 사용자 비밀번호 변경

Linux passwd 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / dig - DNS 레코드와 응답 자세히 조회

Linux / 명령어 / dig - DNS 레코드와 응답 자세히 조회

Linux dig 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 디스크 관리 / 파티션, 포맷, 마운트

Linux / 디스크 관리 / 파티션, 포맷, 마운트

Linux에서 디스크를 관리할 때 필요한 파티션 생성, 파일 시스템 포맷, 마운트 방법을 정리했습니다.

Linux / 명령어 / printf - 지정한 형식으로 값 출력

Linux / 명령어 / printf - 지정한 형식으로 값 출력

Linux printf 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / resolvectl - systemd DNS 설정과 이름 조회 상태 확인

Linux / 명령어 / resolvectl - systemd DNS 설정과 이름 조회 상태 확인

Linux resolvectl 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / tree - 디렉터리 구조를 트리 형태로 출력

Linux / 명령어 / tree - 디렉터리 구조를 트리 형태로 출력

Linux tree 명령어로 디렉터리와 파일 구조를 계층적으로 확인하는 방법을 설명합니다. 설치, 깊이 제한, 숨김 파일, 제외 패턴, 크기·권한 표시와 JSON 저장 방법까지 정리합니다.

Linux / 명령어 / lsmod - 로드된 커널 모듈 확인

Linux / 명령어 / lsmod - 로드된 커널 모듈 확인

Linux lsmod 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.