elmitash의 모든 글

일본에서 일하고 있는 자바 웹 어플리케이션 개발자.

와이어가드 – 특정 사이트만 VPN 적용해서 우회하기

와이어가드(Wireguard)에서 특정 사이트만 VPN으로 우회해서 접속하는 방법.

루리웹이 가끔 해외접속을 차단하긴 했는데 이번엔 아주 제대로 DDOS 공격을 받았는지 오랫동안 해외접속을 차단하고 있다.
평소에도 와이어가드로 한국IP로 접속하긴 했는데 이게 다른 사이트에서 한국IP로 접속하면 이런저런 문제가 또 생겨서 VPN을 껐다켰다하면서 쓰기 귀찮아서 이번에 제대로 대응을 했다.

루리웹IP 찾는 방법은 커맨드창에서 PING 때려보면 간단하게 나오지만, www 서버뿐 아니라 이미지 서버도 별도로 운영하기 때문에 적당히 몇군데 PING 때려본 결과 대충 아래 대역을 사용 중인거 같으니 전부 넣었다.
와이어가드 접속설정에서 아래 AllowedIPs에 루리웹에서 사용하는 IP인 130.24.8.0에 마스크 /24로 130.24.8.0~130.23.8.255까지 전부 넣었다.

타이탄폴2 msvcr120.dll 이 없어서 실행 안되는 문제 해결

윈도우11이라서 에러가나는건가 생각했는데 처음 타이탄폴2를 설치할때 DLL도 같이 설치 되었을텐데 윈도우를 갈아엎고 게임 설치된 폴더를 다운로드로 다시 지정하게 되면 DLL설치는 건너뛰게 되니까 이런 문제가 생긴듯.

해결방법을 찾은 페이지
https://answers.ea.com/t5/Battlefield-1/MSVCP120-dll-MISSING-ERROR/m-p/10700296

Microsoft Visual C++ 2013 Redistributable을 설치해야 msvcr120.dll가 설치 된다.

다운로드 페이지
https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170

vcredist_x64.exe
vcredist_x64.exe를 다운로드, 설치

EA 어플이 거지 같다고 생각하고 복구 반복하고 별거 다 해 봤는데 이걸로 바로 해결…하고 보니 이전에도 같은 짓을 한 기억이 어렴풋이 나네… 그래서 블로그에 적어둠.

추가 – 재인스톨하지 않고 언어변경하는 방법
Titanfall2\Support\mnfst.txt 파일 열어서 언어코드 확인
일본어는 ja_JP

레지스트리 에디터 열어서 아래 부분에 언어코드를 변경 후, EA 어플리에서 타이탄폴2 복구.
HKEY_LOCAL_MACHINE\SOFTWARE\Respawn\Titanfall2\Locale
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Origin Games\1039093\Locale
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Respawn\Titanfall2\Locale

출처 – https://www.reddit.com/r/titanfall/comments/10p9n05/how_to_change_language_when_using_ea_app_german/

DisplayPort 사용시 윈도우 진입 전까지 모니터 신호가 없는 문제

DP(Display Port) 사용시 컴을 켜면 한동안 모니터가 신호 없음으로 슬립으로 들어가고
윈도우 로그인 화면이 나오면 그때서야 신호를 받아서 모니터가 켜지는 문제가 있다.

나 같은 경우는 윈도우10에서 어떤 업데이트를 한 이후부터 이렇게 됐는데
마침 보드를 교체할 때라 보드 교체 후, 윈도우11로 업그레이드를 하고 그래픽 카드 드라이버도 바꿨는데 여전히 같은 현상이 생겨서 한동안 HDMI로 연결해서 사용.
HDMI는 전혀 문제가 없어서 컴을 켜면 바이오스 로고 화면부터 나오고, 윈도우 로딩화면도 나오고 로그인 화면이 잘 나온다.

이런저런 검색을 해 봐도 문제가 있는 사람은 많아도 해결한 사람이 잘 안보였는데
그래픽카드 드라이버 업데이트, 바이오스 CSM(레가시 부팅) 모드를 켜거나 끄기, 윈도우에 멀티 모니터 설정에서 주모니터로 설정하기 정도가 있었지만, 내 문제는 해결이 안됐다.

그러다 레딧에서 아래 글을 발견. 해결했다.
Cannot access BIOS with displayport

아래 링크에서 디스플레이 포트 펌웨어를 다운 받아서 펌웨어를 업데이트하라는 것이었는데,
펌웨어 업데이트 후 재시작하면 바이오스 화면부터 잘 나오기 시작한다.
https://www.nvidia.com/en-us/drivers/nv-uefi-update-x64/

이 문제가 골때리는게 바이오스 설정 문제인것 같아서 바이오스 설정 화면으로 들어가고 싶어도 화면이 나오지를 않으니 바이오스 설정을 확인할 수도 바꿀 수도 없다.
윈도우에서 UEFI로 들어가는 문제해결 화면으로 진행해도 화면이 꺼져버리니 뭘 할 수가 없어서 더 답답했다.
HDMI로 연결하면 화면이 잘 나오는데, HDMI 연결할 시에는 DP에 연결된건 뽑지 않으면 여전히 DP로 화면신호가 전송 되어서 화면이 안나오는 경우도 있으니 HDMI로 바꿀 경우에는 참고.

생각해보니 몇년전에도 이 문제로 고통받다가 자연스럽게 해결이 되었는데, 이번에 다시 이 현상이 발생한걸로 봐서 윈도우 설정에 따라서 왔다갔다 하는듯하다.
어쨌든 이제 펌웨어 업데이트를 했으니 다시는 안그러겠지…

우분투 22.04 에서 IPTABLES 애드온 XTABLES 로 국가별 접속 차단/허용

우분투 서버 22.04 LTS라고 무작위 SSH 접속 시도가 사라지지는 않으니…
새 버전에서도 xtables-addon에 geoip를 사용해서 우리나라 이외에 나라는 전부 막아버리자.

SSH 접속 시도 보기(최근 50건만)

lastb 결과
인스턴스 생성 직후인데도 하루종일 끊임없이 들어온다.

xtables-addons-common 설치

iptables에 geoip 모듈이 들어있는 xtables-addons-common 팩키지를 설치한다.

iptables geoip 모듈 설정

iptables 설정을 백업하고, 편집할 파일을 생성하자.

iptables.geoip 파일을 편집. 첫째줄이 한국(국가코드 KR) 이외에는 다 리젝트. 둘째줄이 SSH가 사용하는 22포트를 허용.

편집한 iptables.geoip 파일을 적용하면 에러가 나온다. 국가별 IP 리스트가 없으니까.

국가별 IP 리스트 작성

https://github.com/elmitash/geoip_krnic2dbip 에서 go로 작성한 ip파일 리스트를 다운로드하고 변환하는 툴을 다운로드 받아 실행권한을 준다.

ARM CPU를 사용하는 경우에는 geoip.sh 안에 EXE_FILE 변수의 파일명을 수정할 것.
준비가 되면 geoip.sh를 실행하자.
geoip.sh에 내용은 KRNIC에서 국가별IP 할당정보를 받아오고, krnic2dbip_linux_* 실행파일이 db-ip.com에서 사용하는 형식으로 변환.
db-ip.com 형식의 CSV 파일을 xt_geoip_build 에서 /usr/share/xt_geoip 디렉토리에 국가코드별로 정리해서 넣어준다.

다시 iptables.geoip 파일을 적용하면 OK.

참조 글
우분투 18.04 에서 iptables 애드온 xtables 로 국가 별로 접속 차단 허용

우분투 서버 22.04 LTS 공개키 방식 SSH 접속이 안됨

오라클 클라우드에서 ARM 서버를 생성해서 최신 우분투 22.04 LTS를 운영체제로 선택했는데, SSH 접속이 안되서 한시간 정도 헤맸다.

오라클 클라우드에서는 서버를 생성할 때 SSH 접속용 공개키를 생성하거나 등록해야만 SSH 접속을 사용할 수 있는데,
기존 오라클 클라우드에서 사용하던 서버에 등록한 공개키를 등록해서 서버를 생성.
서버 기동 완료 후에 SSH 접속을 하면 아래 에러가 발생. (MobaXterm에 표시되는 에러 메시지)

서버 접속조차 불가능하니 로그를 볼 수도 없고, 한참 헤맸다.

결국 기존 서버에서 ssh -i 옵션으로 개인키를 지정하니 접속이 되더라 (왜 되는건지…?)
접속 에러가 기록된 /var/log/auth.log 파일을 보면

이런 에러 내용이 찍혀 있는데, 암호화 알고리즘이 문제인것 같아서 좀 검색해 보니…

OpenSSH 8.8부터 SHA-1 알고리즘으로 작성한 RSA 인증은 무효화 되었다고 한다.
서버 생성할 때 등록했던 예전부터 사용하던 키쌍이 2년 정도 된 오래된것이니 아마 그걸로 작성했던듯.

ssh-keygen 커맨드로 새로 키를 생성해서 사용하면 문제가 없다.
아무 옵션을 지정하지 않으면, 3072bit RSA(SHA256)로 작성 되니 그걸 사용하면 문제 없다.

일단 ed25519가 더 좋은것 같으니… 이걸로 작성해서 사용해야겠다.

참고 사이트
RSA, ED25519 차이(성능 등)
https://naleejang.tistory.com/218
SSH keys
https://wiki.archlinux.org/title/SSH_keys