
1. IP 주소가 두개, 혹은 그 이상이면 좋을까?
최근 ip addr add 명령어를 공부하면서 하나의 인터페이스에 IP를 두 개 설정해봤다.
그런데... 두 개 다 제대로 쓸 수 있는 걸까?, 또 두개를 쓰는게 진짜 의미있게 쓰여질까? 라는 의문이 들었다.
이에 다시 직접 IP 주소를 추가해보고, 어떻게 쓰여질 수 있을지, 또 주의사항은 무엇인지 직접 실험해보기로 하자.
2. 개념 정리: 하나의 NIC에 여러 IP -> IP aliasing 이라고 한다.
- 리눅스는 기본적으로 IP aliasing을 허용한다.
- IP를 추가하면 서브 인터페이스 없이도 여러 IP가 바인딩(추가) 된다.
- 이론적으로 추가할 수 있는 IP 의 갯수는 제한이 없다
- 하지만 실질적으로 운용을 한다면 과부화가 생길 수 있으므로 서버 자원에 맞게 바인딩 해야 한다.
sudo ip addr add 192.168.0.100/24 dev eno1

ip addr 명령어를 통해, 네트워크 인터페이스에 두 번째 ip 가 추가된 것을 확인할 수 있다. 참고로 ifconfig 명령어에서는 두 번째 ip 주소를 확인할 수 없었다. 이제 ip addr 로 쓸거다.
3. 실험해보기
3-1. 두 IP 주소 모두 외부 네트워크와 통신이 가능한가?
ping -I 192.168.0.27 8.8.8.8
ping -I 192.168.0.100 8.8.8.8

sudo tcpdump -n -i eno1 icmp


tcpdump 명령어로 확인해 본 결과, 두 ip 모두 각각의 출발지 역할로서 외부 네트워크와 통신이 가능하다는 것을 확인했다.
3-2. 포트바인딩으로 특정 IP만 사용하게 하기
python3 -m http.server 8080
위의 명령어를 입력하면, 내 로컬 서버가 실행되어서 로컬 디렉터리를 웹 브라우저에서 접근할 수 있다. 터미널에서 명령어를 입력하면 서버가 실행되었다고 나온다. 이 때 내 ip 주소를 입력하면 디렉터리 구조가 보이는 페이지가 보인다.


이렇게 접근 가능한 상황에서, 두 개의 아이피 주소 중 하나의 아이피로만 접근이 가능하도록 바인딩 할 수 있다.
python3 -m http.server 8080 --bind 192.168.0.100



이렇게, 컴퓨터 혹은 서버가 수신할 IP를 제한하여 사용할 수 있기 때문에, 내부 서비스를 분리하거나 보안 격리할 수 있다.
즉 외부에서 절대 접근할 수 없게 하거나 IP 마다 각각 다른 포트를 바인딩하여 관리할 수 있게 된다.
# 첫 번째 서버 - 192.168.0.27:8000
python3 -m http.server 8000 --bind 192.168.0.27
# 두 번째 서버 - 192.168.0.100:8001 (다른 IP, 다른 포트)
python3 -m http.server 8001 --bind 192.168.0.100
5. 실무에서는 어떻게 활용될까? (서버 입장)
- 접근 주소를 분리할 수 있기 때문에 서비스를 분리하여 관리할 수 있다. (예: 하나는 내부망용, 하나는 외부망용)
- 테스트용 가짜 IP 환경 구성하여, 손쉽게 테스트 환경을 조성할 수 있다.
- 로드밸런싱 및 고가용성 이중화를 실현할 수 있다.
- 참고로 사용자 입장에서 내가 IP를 두개를 가지고 특정 서비스를 이용하는 것 -> 접속 목적에 따라 IP 를 다르게 사용 가능, 보안 레벨에 따라 분리된 접근 가능, 서버 연결 끊김에 대비할 수 있음과 같은 장점들이 있을 것으로 생각된다. 하지만 일반적으로 인터넷을 사용하는 입장에서는 IP가 두개로 운영되는 것에 크나큰 이점은 없는 것 같다.
6. 주의사항
- 같은 서브넷에 IP를 2개 할당하면 ARP 충돌이나 라우팅 모호성이 생길 수 있다.
따라서 직접 추가한 IP 를 계속 사용하는데 이점이 있다면 라우터의 DCHP 설정에서 해당 IP 를 제외하여야 한다. - 패킷 송신 시 기본 IP로만 나갈 수도 있음 → ip rule 명령어로 정책 기반 라우팅 필요할 수 있다.
- 방화벽 규칙이나 서버 설정에 따라 예외, 장애가 발생 가능하다.
7. 마무리
리눅스 환경에서는 하나의 인터페이스에 여러 개의 IP를 설정할 수 있고, 이 기능은 실무 환경에서 테스트, 접근 분리, 이중화, 도커 연동 등 다양한 용도로 쓰일 수 있다고 생각한다. 또 단순히 IP를 추가하는 걸 넘어서, 라우팅 정책, 트래픽 흐름과 보안 정책까지 고려해야 제대로 활용할 수 있을 것 같다.
'네트워크 공부 & 실습 > 네트워크 실습' 카테고리의 다른 글
| [Network] SNMP 실습편 – snmpget과 snmpwalk로 장비 상태 확인하기 (2부) (1) | 2025.04.22 |
|---|---|
| [Network] MTU 직접 ping 명령어로 실험해보기 (0) | 2025.04.18 |
| [Network] ip link 로 네트워크 인터페이스 상태 확인하기 (0) | 2025.04.15 |
| [Network] UFW로 리눅스 방화벽 설정 실습하기 (0) | 2025.04.14 |
| [Network] traceroute 명령어로 인터넷 경로 추적하기 (1) | 2025.04.10 |