NOMO.asia

팰월드 방송 중 서버 아이피가 유출되면 무작위 비밀번호 대입을 통한 접속 시도와 디도스 등 여러 문제가 발생할 수 있다. 따라서 서버 아이피가 방송에 노출되지 않도록 하는 것은 필수이다. 그러나... 팰월드에서 전용 서버 (Dedicated server) 접속 시 아이피 또는 서버 주소를 입력해야 하는데 스트리머가 화면을 가리지 못하여 실수로 아이피가 노출되거나, 재접속 시 화면 가림을 잊어 기입력한 아이피가 노출되는 등의 사유로 아이피 유출이 발생한다.

따라서 본 글에서는 게임을 직접적으로 건드리지 않고, 접속 시 서버 아이피를 숨기는 간단한 방법을 소개한다. (일부 방송인용 마크 서버에서 사용하는 방식이다.)

원리 설명

핵심은 hosts 파일을 수정하여 어떤 더미 도메인으로 접속하면 실제 팰월드 서버 ip로 접속되도록 하는 것이다. hosts 파일은 도메인 이름을 특정 ip 주소로 매핑하는 로컬 설정 파일로, DNS보다 우선적으로 참조된다.

hosts(C:\Windows\System32\drivers\etc\hosts) 파일에 아래의 한 줄을 추가해준다. 아이피 부분에는 접속해야 하는 팰월드 서버 아이피를, 도메인은 원하는 아무 도메인이나 입력하자. 더미 도메인이라 실제 존재하지 않는 도메인 아무거나 다 가능하다. 센스있는 도메인 주소를 만들어보자.

11.111.11.11 pal.server

이렇게 하면 pal.server 로 접속했을 때, hosts 파일에 접속된 ip 로 접속하게 된다.

실제 서버 접속 시에는 해당 더미도메인:포드 번호 형태로 접속하면 문제없이 잘 접속 된다.

실제 응용 방법

서버장이 실제 유저들한테 이러한 방법을 가이드 할 때, 화면을 가리고 hosts 파일을 직접 수정하라고 해도 되긴 하지만 hosts 파일을 수정하는 작업이 은근 번거롭다. hosts 파일은 일반적으로 직접 수정이 되지 않으므로, 바탕화면 등으로 hosts 파일을 복사하여 수정 후 해당 폴더에 다시 붙여넣어야 한다.

서버장 입장에서 유저들이 hosts 파일을 수정하도록 하는 가장 간단한 방법은 hosts 파일을 수정하는 bat 파일을 만들어서 관리자 권한으로 실행하라고 배포하는 것이다. (hosts 파일 수정을 막는 백신만 없으면 잘 된다) 예시 bat 파일의 내용은 아래와 같다.

@echo off
setlocal enabledelayedexpansion

:: Hosts 파일 경로 설정
set HOSTS_FILE=%windir%\System32\drivers\etc\hosts
set TARGET_IP=11.11.111.11
set TARGET_ENTRY=pal.server

:: 백업 파일 생성 (존재하지 않을 때만)
if not exist "%HOSTS_FILE%.bak" (
    if exist "%HOSTS_FILE%" (
        copy "%HOSTS_FILE%" "%HOSTS_FILE%.bak" >nul
        echo Backup created at: %HOSTS_FILE%.bak
    ) else (
        echo Hosts file not found.
        exit /b 1
    )
)

:: 임시 파일 생성
set TEMP_FILE=%TEMP%\hosts.tmp
> "%TEMP_FILE%" (
    set FOUND=0
    for /f "usebackq tokens=1,2*" %%A in ("%HOSTS_FILE%") do (
        if /i "%%B"=="%TARGET_ENTRY%" (
            echo %TARGET_IP% %TARGET_ENTRY%
            set FOUND=1
        ) else (
            echo %%A %%B %%C
        )
    )
    if !FOUND!==0 (
        echo %TARGET_IP% %TARGET_ENTRY%
    )
)

:: hosts 파일 업데이트
move /y "%TEMP_FILE%" "%HOSTS_FILE%" >nul
if %ERRORLEVEL%==0 (
    echo Hosts file updated successfully.
) else (
    echo Failed to update hosts file.
    exit /b 1
)
endlocal

위 스크립트는 ChatGPT 4.0o 를 이용하여 만든 것으로, hosts 파일에 필요한 라인을 추가하며 이미 해당 라인이 존재하는 경우 ip 만을 업데이트한다. bat 파일로 만들어 관리자 권한으로 실행했을 때 hosts 파일이 잘 수정되는 것을 확인했다. 만약 ip 가 변경되면 bat 파일에서 ip 부분만 변경하고 다시 실행하도록 시키면 된다. 위 bat 파일을 실행하면 백업 파일(bak 파일)을 자동으로 만들기 때문에, 만약 문제가 발생하면 hosts 파일을 삭제하고 hosts.bak 파일의 이름을 hosts로 되돌리면 된다. 

 

이를 살짝 더 응용하면 간단한 툴을 만들어서 런처처럼 배포해도 된다. 그럼 그 툴에서는 별도의 웹서버에서 서버 ip 를 가져와서, ip 가 갱신된 경우 hosts 파일을 재수정 하고 게임을 실행하도록 하면 되겠다. ChatGPT 를 이용하면 아주 쉽게 만들 수 있을 것이다.