기계 번역 안내
이 글의 일부 내용은 DeepSeek 의 도움을 받아 번역되었습니다. 번역문에는 부정확한 부분이 있을 수 있으며, 언어와 문화적 배경의 차이로 인해 일부 고유한 용어나 문화적 맥락을 이해하기 어려울 수 있습니다. 정확한 표현을 확인하려면 원문을 읽어 주세요. 문화적 배경이나 내용에 궁금한 점이 있다면 사이드바의 연락 방법을 통해 문의해 주세요. 설명해 드리겠습니다.
VPS를 처음 사용하는 많은 분들이 겪는 문제가 있습니다. 서비스 제공자 패널에서 IPv4와 /64 단위의 IPv6 대역을 할당해 주었지만, 시스템에는 IPv4만 있거나 IPv6만 있거나, 패널에 ‘IP 없음’이라고 표시되는 경우입니다. 이 글에서는 Debian 12 VPS에서 ‘네트워크 정보 없음’ 상태에서 IPv4와 IPv6를 정상적으로 활성화하기까지의 과정을 단계별로 기록하여, 이제 막 입문한 분들께 도움이 되고자 합니다.
사전 준비: 서비스 제공자로부터 정보 확인
작업을 시작하기 전에 먼저 서비스 제공자의 관리 패널에서 할당된 네트워크 정보를 확인해야 합니다.
- IPv4 주소와 서브넷 마스크(예:
xxx.xxx.xxx.xxx/24), 그리고 해당하는 기본 게이트웨이 - IPv6 대역, 일반적으로
/64단위(예:2a00:abcd:1234:5678::/64). 주의할 점은 이것이 전체 네트워크 대역이라는 점이며, 곧바로 사용 가능한 주소가 아닙니다.
우리의 목표는 이 IPv6 대역에서 임의의 주소(예: 2a00:abcd:1234:5678::1/64)를 선택해 VPS에 할당하는 것입니다. /64 대역 자체를 주소로 사용해서는 안 됩니다. 이는 많은 입문자들이 저지르는 실수입니다.
첫 번째 단계: VPS에 연결하고 네트워크 인터페이스 확인
SSH 등을 이용해 VPS에 로그인합니다. 먼저 서버의 네트워크 인터페이스 이름을 확인합니다.
ip -o link
출력 내용 예시:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether aa:bb:cc:dd:ee:ff brd ff:ff:ff:ff:ff:ff
여기서 eth0이 네트워크 인터페이스 이름입니다. 만약 enp1s0, ens3 등 다른 이름으로 보인다면, 아래 설정에서 실제 이름으로 바꾸세요.
두 번째 단계: 기존 netplan 설정 확인 및 백업
Debian 12는 네트워크 설정 도구로 netplan을 사용하며, 기본 설정 파일은 보통 /etc/netplan/50-cloud-init.yaml입니다. 먼저 내용을 확인합니다.
cat /etc/netplan/50-cloud-init.yaml
만약 파일에 다음과 같은 내용만 있다면
network:
ethernets:
eth0:
dhcp4: true
version: 2
이는 시스템이 DHCP를 통해 자동으로 IPv4 주소를 얻는 설정입니다. 정적 IP가 필요한 VPS에는 적합하지 않으므로, cp 명령으로 원본 파일을 백업합니다.
sudo cp /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml.bak
세 번째 단계: cloud-init의 네트워크 설정 비활성화
많은 클라우드 이미지에서 cloud-init을 통해 netplan 설정을 자동으로 생성합니다. 비활성화하지 않으면 재부팅 후 사용자 정의 설정이 덮어쓰일 수 있습니다. /etc/cloud/cloud.cfg.d/ 아래에 설정 파일을 만들어 네트워크 구성을 비활성화합니다.
sudo mkdir -p /etc/cloud/cloud.cfg.d
sudo tee /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg > /dev/null <<'EOF'
network: {config: disabled}
EOF
이 파일은 cloud-init이 네트워크 설정을 자동 생성하지 않도록 합니다.
네 번째 단계: 통합된 IPv4 + IPv6 설정 작성
이전에 IPv6를 위해 임시로 생성한 /etc/netplan/90-ipv6.yaml이 있다면 삭제합니다.
sudo rm -f /etc/netplan/90-ipv6.yaml
그런 다음 /etc/netplan/50-cloud-init.yaml을 생성하거나 덮어쓰고, 하나의 네트워크 인터페이스 아래에 IPv4와 IPv6를 함께 작성합니다. 여기서는 IPv4 주소가 192.0.2.10/24, 게이트웨이가 192.0.2.1, IPv6는 2001:db8:abcd:1234::1/64, 게이트웨이가 fe80::1라고 가정합니다.
sudo tee /etc/netplan/50-cloud-init.yaml > /dev/null <<'EOF'
network:
version: 2
ethernets:
eth0:
match:
macaddress: aa:bb:cc:dd:ee:ff
set-name: eth0
addresses:
- 192.0.2.10/24
- 2001:db8:abcd:1234::1/64
nameservers:
addresses:
- 1.1.1.1
- 8.8.8.8
- 2606:4700:4700::1111
- 2001:4860:4860::8888
routes:
- to: default
via: 192.0.2.1
- to: default
via: fe80::1
on-link: true
EOF
몇 가지 설명:
match.macaddress는 네트워크 카드의 MAC 주소를 사용해도 되고, 생략하고set-name: eth0만 남겨도 됩니다.addresses에는 IPv4와 IPv6 두 줄을 포함합니다.nameservers.addresses는 DNS를 설정합니다. IPv4와 IPv6 DNS를 함께 적을 수 있습니다.- IPv6 기본 게이트웨이
fe80::1은 링크 로컬 주소이므로on-link: true를 추가해야 올바르게 동작합니다.
DHCP를 정적 설정으로 변경하는 과정도 이 단계와 유사하며, 많은 온라인 튜토리얼에서 자주 언급됩니다.
다섯 번째 단계: 파일 권한 수정 및 설정 적용
Netplan은 설정 파일의 권한이 엄격하게 관리되어야 합니다. 다음 명령어로 권한을 수정합니다.
sudo chmod 600 /etc/netplan/*.yaml
그런 다음 설정을 생성하고 적용합니다.
sudo netplan generate
sudo netplan apply
netplan apply를 실행하면 다음과 같은 메시지가 나타날 수 있습니다.
Cannot call openvswitch: ovsdb-server.service is not running.
이는 시스템에 Open vSwitch 관련 패키지가 설치되어 있지만 해당 서비스가 실행되지 않아서 발생합니다. 일반적인 VPS에서는 이 경고를 무시해도 IP 설정에 문제가 없습니다.
여섯 번째 단계: 주소와 라우팅 확인
설정을 마친 후, 다음 명령어로 IPv4와 IPv6가 제대로 적용되었는지 확인합니다.
ip addr show eth0
ip route
ip -6 route
IPv4와 IPv6 주소가 모두 할당되고 기본 경로(라우트)가 있는지 확인합니다. 예:
inet 192.0.2.10/24
inet6 2001:db8:abcd:1234::1/64
...
default via 192.0.2.1 dev eth0
...
default via fe80::1 dev eth0 onlink
일곱 번째 단계: DNS 해석 문제 처리
IP를 설정한 후 ping은 되는데 도메인 해석이 실패하는 경우가 있습니다. 예:
curl -4 example.com
curl: (6) Could not resolve host: example.com
이것은 /etc/resolv.conf 파일이 없거나 존재하지 않는 파일을 가리키기 때문일 수 있습니다. 수동으로 복구할 수 있습니다.
sudo rm -f /etc/resolv.conf
sudo tee /etc/resolv.conf > /dev/null <<'EOF'
nameserver 1.1.1.1
nameserver 8.8.8.8
nameserver 2606:4700:4700::1111
nameserver 2001:4860:4860::8888
EOF
수정 후 테스트:
curl -4 ip.sb
curl -6 ip.sb
자신의 IPv4와 IPv6 주소가 반환된다면 DNS가 정상적으로 작동하는 것입니다.
여덟 번째 단계: 패널/서비스 재시작 및 마무리
x-ui 같은 관리 패널을 사용하고 있다면, 네트워크 설정과 DNS가 모두 정상으로 확인된 후에 패널 서비스를 재시작합니다.
sudo systemctl restart x-ui
그런 다음 패널을 새로고침하면 보통 IPv4와 IPv6 주소가 올바르게 표시됩니다. 패널이 외부 API를 통해 위치 정보를 가져오는 경우, DNS가 외부 도메인을 해석할 수 있어야 합니다.
요약
위 단계들을 통해 우리는 다음과 같은 목표를 달성했습니다.
- 서비스 제공자 패널에서 IPv4, IPv6 설정 정보를 확인하고, IPv6의
/64대역이 네트워크 대역이므로 직접 주소를 선택해야 한다는 점을 이해했습니다. ip link명령으로 네트워크 인터페이스 이름을 확인하고, 그에 맞게 netplan 설정을 수정했습니다.- cloud-init 네트워크 설정을 비활성화하여 재부팅 후에도 설정이 덮어쓰이지 않도록 했습니다.
- netplan에 IPv4와 IPv6 주소, 게이트웨이, DNS를 함께 추가하고 적절한 권한을 설정했습니다.
- 설정 적용 후 주소, 라우팅, 연결성을 확인하고, 일부 위험하지 않은 시스템 경고는 무시했습니다.
- DNS 파일 누락으로 인한 도메인 해석 실패를 해결하여 외부 접속이 정상화되었습니다.
전체 과정이 복잡하지는 않지만 각 단계마다 세심함이 필요합니다. 예를 들어 IPv6 주소를 선택할 때 /64 대역 자체를 사용하지 말아야 하며, netplan을 수정한 후에는 generate를 먼저 실행하고 apply를 해야 합니다. 또한 권한이나 Open vSwitch 경고가 나타날 때 문제의 본질을 파악해야 합니다. 이 글이 여러분이 VPS에서 IPv4와 IPv6 기능을 원활하게 활성화하는 데 도움이 되길 바랍니다.
