EQVPS
대시보드시작하기

VPS의 호스트 이름과 시간대를 바꾸는 방법

Ubuntu, Debian, Windows Server에서 서버 이름을 바꾸고 시계를 내 시간대에 맞춥니다. hostnamectl만 쓰면 나타나는 sudo 경고 없이, 변경 후 cron, 로그, 시간 동기화까지 확인했습니다. 모든 단계를 저희 이미지에서 직접 검증했습니다.

새 서버의 이름은 주문할 때 입력한 것이고, 시계는 UTC입니다. 둘 다 쉽게 바꿀 수 있습니다. 이름 변경에는 함정이 하나 있습니다. 흔히 쓰는 명령이 /etc/hosts에 예전 줄을 남겨 두기 때문에, Ubuntu에서는 sudo가 명령을 실행할 때마다 불평합니다. 이 가이드는 Ubuntu와 Debian에서 두 가지를 모두 바로잡고, Windows Server 명령도 보여 드립니다. 모든 단계를 저희 이미지에서 직접 실행했습니다.

sudo 권한이 있는 사용자가 필요합니다. Ubuntu 설정 가이드에서 만들 수 있습니다.

1. 현재 이름과 시각 확인하기

hostnamectl
timedatectl

새로 만든 Ubuntu 24.04 서버는 정적 호스트 이름으로 주문 때 입력한 이름을 보여 주었고, Time zone: Etc/UTC, System clock synchronized: yes, NTP service: active도 표시했습니다. Debian 12와 13도 같았습니다. 시간 동기화는 이미 동작하므로 NTP를 따로 설치할 필요가 없습니다.

2. 호스트 이름 바꾸기

짧은 이름을 고르거나, 직접 관리하는 DNS 레코드와 맞출 거라면 web1.example.com 같은 전체 이름을 고르세요.

sudo hostnamectl set-hostname web1.example.com

이름은 바로 바뀌지만 /etc/hosts에서는 127.0.1.1이 여전히 예전 이름을 가리킵니다. Ubuntu에서는 곧바로 드러났습니다.

sudo: unable to resolve host web1.example.com: No address associated with hostname

hostname -f도 같은 이유로 실패했습니다. Debian은 다른 경로로 이름을 찾아 경고를 띄우지 않았지만, /etc/hosts는 똑같이 낡은 상태였습니다. 두 시스템 모두 파일을 고치세요.

sudo sed -i 's/^127\.0\.1\.1 .*/127.0.1.1 web1.example.com web1/' /etc/hosts
grep 127.0.1.1 /etc/hosts
hostname -f

그 뒤로 sudo는 조용해졌고, hostname -f는 web1.example.com, hostname -s는 web1을 출력했습니다.

/etc/hosts 맨 위의 주석에는 이 파일을 cloud-init이 관리하므로 수정 내용이 사라질 수 있다고 적혀 있습니다. 저희 이미지에서 cloud-init은 서버의 첫 부팅 때만 이 파일을 씁니다. 재부팅해 보고, 다음 부팅을 cloud-init이 새 인스턴스로 다루게도 해 보았지만 이름과 /etc/hosts의 줄은 둘 다 그대로였습니다.

호스트 이름은 서버 안에만 있습니다. 다른 컴퓨터가 그 이름으로 서버를 찾게 하려면 DNS 레코드도 추가하세요. 도메인을 VPS에 연결하는 방법에서 설명합니다. 메일 서버라면 역방향 레코드도 중요합니다. 역방향 DNS 설정을 참고하세요.

3. 시간대 바꾸기

시간대 목록을 보고 고르세요. 저희 서버에는 497개가 있었습니다.

timedatectl list-timezones | grep -i tokyo
sudo timedatectl set-timezone Asia/Tokyo
timedatectl

시계 자체는 움직이지 않습니다. 바뀌는 것은 시각을 보여 주는 방식과 현지 시각으로 짠 일정을 해석하는 방식뿐입니다. UTC에서 Asia/Tokyo로 바꾼 뒤 이렇게 됐습니다.

항목변경 후
date, journalctl즉시 도쿄 시간
cron즉시 도쿄 시간: 09:48로 잡은 작업이 09:48:01 JST에 실행, 재시작 없음
/var/log/syslog (Ubuntu)rsyslog를 재시작할 때까지 UTC 시각으로 기록
/etc/timezone (Ubuntu)여전히 Etc/UTC

그러니 로그 서비스와, 앱처럼 오래 실행되며 시각을 찍는 프로그램은 재시작하세요.

sudo systemctl restart rsyslog

Debian 12와 13에는 rsyslog가 설치되어 있지 않습니다. 로그는 journal에만 있고, journal은 새 시간대를 알아서 따릅니다.

일부 오래된 프로그램은 시스템 설정이 아니라 /etc/timezone에서 시간대를 읽습니다. 그중 하나가 아직 UTC를 보여 준다면, 그 파일에 같은 이름을 써 넣고 해당 프로그램을 재시작하세요.

echo Asia/Tokyo | sudo tee /etc/timezone

바꾸기 전에 crontab을 살펴보세요. UTC 03:00을 생각하고 쓴 0 3 * * * 줄은 이제 도쿄 시간 03:00, 즉 실제 시간으로 9시간 일찍 실행됩니다.

4. Windows Server

Windows Server 2022에서는 PowerShell을 관리자로 엽니다. 이름을 바꾸려면 재시작이 필요합니다.

Rename-Computer -NewName web1 -Restart

Windows 컴퓨터 이름은 15자로 제한되므로 여기서는 짧은 이름을 쓰세요.

시간대는 ID를 찾아 설정합니다. 재시작 없이 바로 적용됩니다.

Get-TimeZone -ListAvailable | Where-Object Id -like '*Tokyo*'
Set-TimeZone -Id 'Tokyo Standard Time'
Get-TimeZone

로그인한 김에 RDP 보안 강화도 해 두면 좋습니다.

어떤 요금제

호스트 이름과 시간대에는 비용이 들지 않으니 어떤 요금제든 괜찮습니다. 작은 Linux 서버라면 Nano(월 $3), Windows Server 2022라면 Windows-Small(월 $11)입니다. 모든 요금제는 VPS 페이지에 있고, 결제는 Base, Ethereum, Polygon 네트워크의 USDT, USDC, ETH로 합니다.

자주 묻는 질문

재부팅하면 cloud-init이 호스트 이름을 되돌리나요?

저희 이미지에서는 아닙니다. hostnamectl로 새 이름을 정하고 재부팅한 뒤, cloud-init이 다음 부팅을 완전히 새 인스턴스로 다루게도 해 보았습니다. 두 번 모두 이름이 유지됐고 /etc/hosts 수정도 그대로였습니다. 재설치하면 원래 이름의 새 시스템이 됩니다.

이름을 바꾼 뒤 sudo가 "unable to resolve host"라고 하는 이유는 뭔가요?

hostnamectl은 이름을 바꾸지만 /etc/hosts는 바꾸지 않아서, 127.0.1.1이 여전히 예전 이름을 가리킵니다. Ubuntu에서는 그러면 sudo가 명령마다 "unable to resolve host"를 출력합니다. 127.0.1.1 줄의 예전 이름을 새 이름으로 바꾸면 경고가 사라집니다.

서버는 UTC로 둘까요, 현지 시간으로 둘까요?

UTC가 더 안전한 기본값입니다. 여러 서버의 로그 시각이 맞아떨어지고, 서머타임 전환 때 시각이 건너뛰지도 않습니다. cron 작업과 로그 시각을 내 시간으로 읽고 싶다면 내 시간대로 바꾸세요. 둘 다 잘 동작하고 언제든 다시 바꿀 수 있습니다.

NTP를 설정해야 하나요?

아니요. 저희 Ubuntu와 Debian 이미지는 첫 부팅부터 systemd-timesyncd로 시계를 동기화합니다. timedatectl을 실행해 "System clock synchronized: yes"를 확인하세요.

시간대를 바꾸면 cron 작업이 망가지나요?

cron은 새 시간대를 바로 사용합니다. 저희 Ubuntu 24.04 서버에서 도쿄 시간 09:48로 잡은 작업이 cron 재시작 없이 도쿄 시간 09:48:01에 실행됐습니다. 다만 UTC 기준으로 써 둔 작업은 확인하세요. 이제 그 시각이 현지 시간으로 해석됩니다.

댓글

아직 댓글이 없습니다. 첫 번째가 되세요.

댓글 남기기

댓글은 표시되기 전에 검토됩니다.