Introduction
안녕하세요, codedbyjst입니다!
이번에는 개발과정 중 수많은 매크로들을 좌절에 이끈... 4080 에러의 해결책에 대해 이야기해보려 합니다.
4080 에러가 뭐죠?
우선 4080 에러가 어떤 것인지부터 알아야겠죠!
4080에러는 최근 카카오게임즈측에 의해 추가된 에러로서, 발동 조건과 영향은 아래와 같습니다.
발동 조건 : 단시간 내에 약 100회(8/7 현재는 약 10회)의 계정 생성이 이루어진 경우
발동 후 영향 : 일정 시간(약 12시간~24시간)의 IP밴
즉, 리세마라를 하다 보면 자연스럽게 밴을 당하고... 더이상 계정 생성을 못 하도록 막는 에러 코드입니다.
밴을 당하는 시간이 상당히 길기 때문에, 매크로가 빨라져도 아무런 장점이 되지 못하도록 막는다고 볼 수도 있겠네요.
근데 그거 MAC 주소 바꾸면 되는거 아닌가요?
일단, 아닙니다!
아마 이를 우회하는 방법에 관련된 게시글을 읽다가 생긴 착각인 듯 합니다만, 이는 IP할당방식에 대한 잘못된 이해로 인해 발생한 오류입니다.
통신사 공유기만을 이용하는 경우
쉽게 예시를 들어가며 설명하기 위해, 위와 같은 구조의 인터넷이 구성된 가정이 있다고 가정해봅시다.
사용자는 'PC 1'에서 매크로를 돌리고 있었고, 4080 에러가 발생하여 위의 글을 읽고 따라합니다.
위의 링크의 방법을 따라 인터넷을 잠시 끊고 MAC주소를 변경하는 과정을 거치면, 어떻게 될까요?
바뀐 부분이 보이시나요? MAC 주소를 바꾸고 다시 접속하니, Public IP(공인 IP)가 변경되었습니다!
따라서 카카오게임즈는 다른 IP에서 접속한 것으로 판단하고, 4080에러를 보여주지 않게 됩니다.
이제 원리를 생각해봅시다.
MAC 주소란, 통신을 위한 네트워크 인터페이스에 할당된 고유 식별자입니다.
네트워크 장비(공유기)는 내부에 있는 장비들을 MAC 주소를 통해 구별합니다. 즉, MAC주소는 고유한 값으로써 절대 겹칠 수 없다고 가정합니다.
위와 같이 통신사 공유기에 직결된 경우, 하단의 장비를 위해 통신사 공유기는 각 장비에 개별적인 공인 IP를 제공합니다.
그런데 하단의 장비의 연결이 잠시 끊기고, MAC주소가 변경되면 통신사 공유기는 '연결된 장비가 변경되었으니, 새로운 공인 IP를 할당받아 넘겨줘야겠다'라고 판단하게 됩니다.
바로 이 원리를 이용해서 MAC 주소 변경만으로도 새로운 공인 IP를 할당받을 수 있는 것입니다.
그럼 그냥 주기적으로 MAC주소를 바꿔주는 것으로 충분한 걸까요?
유감스럽지만, 많은 가정의 네트워크는 위와 다른 구조를 갖고 있습니다.
사설 공유기를 이용하는 경우
위 그림은 IPtime과 같은 사설 공유기를 사용하는 가정의 네트워크 구조도를 나타냅니다.
위의 통신사 공유기만을 사용한 구조와 차이점이 눈에 띄이시나요?
통신사 공유기와 PC들 사이에 사설 공유기가 끼고, Public IP 대신 Private IP라는 것으로 표현되었습니다.
통신사가 제공하는 최대 공인 IP수는 정해져 있기 때문에, 사용할 수 있는 공인 IP 갯수는 한정되어 있습니다.
그런데 연결할 장비가 많은 경우(특히, wifi등을 이용하기 위해 사설 공유기를 설치한 경우) 위와 같이 Public IP(공인 IP)와 별개로 Private IP (사설 IP)를 이용하게 됩니다.
이 상태에서 'PC 1'이 KAKAO GAMES에 접속하면 KAKAO GAMES는 어떤 IP로부터의 요청이라고 판단할까요?
바로 공인 IP인 121.173.188.155로부터의 요청이라고 판단합니다.
사설 IP는 우리 공유기가 판단하는 용도지, 카카오게임즈에겐 'PC 1'이 요청하건 'PC 2'가 요청하건 동일한 IP로부터의 요청이라 판단합니다.
그럼 이 상황에서 통신사 공유기만을 이용할 때와 같이 MAC 주소를 바꿔 봅시다. 어떻게 될까요?
MAC 주소가 바뀌면서 Private IP가 변경되었지만,
여전히 카카오게임즈 입장에선 Public IP인 121.173.188.155로부터의 요청으로 판단합니다. 즉, 안 된다는 거죠.
그럼 어떻게 해야 될까요?
간단히 생각하자면, 사설 공유기의 MAC 주소를 바꿔주면 됩니다. 그러면 통신사 공유기가 새로운 IP를 할당해줄 테니까요.
그런데, 그렇게 되면 일정 시간마다 가정 내의 모든 인터넷이 끊겼다 다시 연결되야 할텐데, 너무 불편하지 않겠습니까?
답은, VPN
따라서 가장 먼저 떠오르는 해결책은 VPN일 것입니다!
VPN을 이용하면 소프트웨어적으로 공인 IP를 변경할 수 있고, 그러면 MAC 변경같은건 하지 않아도 될 테니깐요!
그런데, 그거 아십니까? 이미 상용 VPN은 점령당했다는 사실을...
개인적으로 Surfshark를 구독하고 있었어서 바로 테스트해봤습니다만, 진작에 IP를 다 갖다 써서 전부 4080 에러가 뜨더군요.
추가적으로 NordVPN도 결제해서 테스트해봤는데, 역시나 대부분의 IP 대역이 이미 사용되고 있었습니다.
아, 얼마 결제했는지는 묻지 말아주세요. 타격이 큽니다...
여튼, 상용 VPN으로는 역부족이라고 판단되어 다른 방식으로 접근하기로 결정하였습니다.
VPS(VULTR) 이용
VPS에 대해서 아시나요? 쉽게 말하자면 가상의 서버인데, 저렴하게 구성이 가능하다는게 장점입니다.
중요한 점은, '전용 공인 IP를 제공'한다는 것입니다.
즉, VPS를 VPN서버로 사용하여 공인 IP 주소를 바꿀 수 있다는 것이죠!
따라서 제 매크로는 VULTR사의 VPS 서비스를 이용하여 4080 에러를 우회합니다.
사실 VPS 업체는 정말 수없이 많습니다만, VULTR를 이용한 이유는 아래와 같습니다.
'가장 저렴하게 한국 리전을 제공'
사실 한국 공인 IP는 특히나 비싼 편이여서 VPS 업체들이 제공하지 않는게 대부분인데,
한국 리전을 제공하는 정말 몇 안 되는 업체 중 가장 저렴하게 서비스를 제공합니다.
여러 배럭을 돌릴거면 특히나 중요하기 때문에, VULTR를 이용하게 되었습니다.(광고 아닙니다, 광고였음 좋겠어요...)
여튼, VULTR를 이용하여 아래와 같은 과정을 거쳐 VPN 서버를 구축, 접속하여 이용하게 됩니다.
사용하게 되는 인스턴스는 월에 6달러(사용 시간만큼 과금됩니다!)짜리 인스턴스이므로, 비용 부담도 크지 않고,
첫 가입시 2주간 사용 가능한 크레딧 100달러를 제공해주므로 해당 금액 내에서 충분히 사용하면 됩니다!
https://www.vultr.com/?ref=9189268-8H
(위 링크로 가입해주시면 저에게 개발용 크레딧이 들어올 수도 있습니다!)
모든 과정은 자동화되어있으므로, 크게 신경써지 않아도 됩니다만
API 키를 발급받고 프로그램상에 등록하는 과정이 수동으로 필요합니다.
우선 회원가입을 진행하고, 아래의 과정을 따라합니다.
1. 로그인 후 우상단 메뉴에서 API로 이동합니다.
2. Enable API를 눌러 API 키를 활성화시킵니다.
3.(선택) Allow All IPv4를 눌러 모든 IP로부터의 API 접속을 허용합니다.
4. 생성된 API 키를 복사합니다.(박스쳐진 영역)
5. 다운받은 매크로의 VULTR 폴더안에 들어가 vultr.json파일을 엽니다.
(client.ovpn, private_key.pem, public_key.pub 파일은 없을 수 있습니다! 상관 없습니다!)
6. "VULTR_API_KEY"를 발급받은 API 키로 넣어줍니다.
끝입니다! 나머지 작업은 매크로가 알아서 해줍니다.
다만, 유료 과금이 될 수 있는 서비스인 만큼, INSTANCE가 과도하게 쓰지 않는데도 생성되지 않는지 유의합시다.
대시보드의 Products에 가면 현재 사용중인 인스턴스들을 확인할 수 있습니다.
Conclusion
사실 글 자체는 간단하게 쓰였지만, 구현하는 과정이 좀 힘들긴 했습니다.
사실 VULTR 써본적도 없어서 CLI 적응하고, 보안 키 생성하고 연동하는거 테스트하고, OPENVPN도 처음 써봐서 고생하고..
그렇지만 결과적으로 유저가 거의 신경 안 써도 되게 잘 구현된 듯 해서 다행입니다!
또, 테스트를 계속 해 본 결과 VULTR측이 갖고 있는 IP 대역폭도 넓고, 이미 쓰고 있던 사람도 없던 듯 해서 청정한 것 같습니다!
'리세마라 매크로 > 개발일지' 카테고리의 다른 글
[스크린샷] 더, 더 빠르게! (0) | 2022.08.07 |
---|---|
[Main]우마무스메 리세마라 codedby.jst (0) | 2022.08.07 |