no image
AWS로 OpenVPN 간단하게 구축하기
아마존에서 제공하는 프리티어로 간단하게 OpenVPN 서버를 구축하면 요긴하게 자주 쓰입니다.매월 트래픽 100GB로 제공되기 때문에, 사용량을 고려하며 사용합시다. (넘으면 돈나옵니다.)  접근하려는 서비스에서 아마존 IP를 막는 경우도 잦아서,  VPN을 백퍼센트 사용 할 수 있는건 아닙니다.     1. 인스턴스 생성이미지는 저는 페도라쪽을 주로 다루다 보니, Amazon Linux를 그냥 사용했는데, 우분투나 SUSE Linux를 사용하시는것도 상관 없습니다만, Amazon Linux는 2023이 아닌 2로 선택해주세요.      2. 탄력적 IP(공인 IP) 생성좌측 스크롤 내리다 보시면 네트워크 및 보안 탭에서 탄력적 IP로 들어갑시다. 탄력적 IP(공인 IP)는 사용하지 않을 때 과금이 되므..
2024.07.17
no image
[도커] SPT fika 도커로 구동하기
타르코프를 하시는 분은 SPT(singleplayer Tarkov Project)를 잘 알고 있을 것입니다.PVP 기반의 FPS를 싱글플레이 게임으로 변경하여 즐기는 모드입니다. 이 SPT라는 모드에 fika 모드를 추가하게 되면 멀티플레이를 지원하는데 그러면 PVE로 친구들과 같이 즐길 수 있습니다.이전의 sitcoop라는 모드도 있었지만 매우 불안정하고, 기존의 SPT 모드를 별도로 포팅해야 할 수 있어서 매우 불편했습니다. (지금은 사실상 사장된 모드) 필자는 개인 서버 겸, NAS 겸 24/7 굴려먹는 맥미니가 있는데 이 SPT AKI는 exe,dll 을 사용을 하다보니 리눅스 기반에서는 어떻게 올릴 수 있을까 고민하다 도커로 사용하기로 했고, SPT를 Mac에 도커로 구성하고 FIKA를 설치하였..
2024.07.15
no image
[쿠버네티스] 워커노드의 코어 이미지가 삭제 되었을 때 복구 방법
해당 게시글은 기록과 자료 공유를 위해 작성합니다. NKS로 구성된 쿠버네티스 시스템에서 워커노드를 재부팅 이후로 시스템이 무너지는 현상이 발생했는데, 조회를 해보니 calico, CSI, kube-proxy 같은 코어 이미지들이 워커노드에 존재하지 않아 컨테이너가 올라오지 못해 발생하였습니다. 이는 k8s에서 노드의 디스크 용량이 부족하게 될 경우에 가비지 컬렉션이 동작하여 특정 기간 동안 사용되지 않은 이미지들을 삭제하여 용량을 확보를 하는데, 해당 코어 이미지가 삭제가 되고 난 이후로 레지스트리에서 자동으로 받아오지 못하여 워커노드가 무너지는 현상이었습니다.https://kubernetes.io/ko/docs/concepts/architecture/garbage-collection/ 가비지(Garb..
2024.07.15
반응형

아마존에서 제공하는 프리티어로 간단하게 OpenVPN 서버를 구축하면 요긴하게 자주 쓰입니다.

매월 트래픽 100GB로 제공되기 때문에, 사용량을 고려하며 사용합시다. (넘으면 돈나옵니다.)

 

 

접근하려는 서비스에서 아마존 IP를 막는 경우도 잦아서,  VPN을 백퍼센트 사용 할 수 있는건 아닙니다.

리전 선택을 잘합시다.

 

 

 

 

 

1. 인스턴스 생성

이미지는 저는 페도라쪽을 주로 다루다 보니, Amazon Linux를 그냥 사용했는데, 우분투나 SUSE Linux를 사용하시는것도 상관 없습니다만, Amazon Linux는 2023이 아닌 2로 선택해주세요.

Arm은 범용성이 떨어지므로, x86을 고르는게 좋습니다.
보안 그룹 설정
키 페어가 최초 생성시에 없으니 생성합시다.

 

ppk로 하면 putty로 접근할때 변환 안해도 되서 편합니다.

 

 

 

 

 

2. 탄력적 IP(공인 IP) 생성

좌측 스크롤 내리다 보시면 네트워크 및 보안 탭에서 탄력적 IP로 들어갑시다.

 

탄력적 IP(공인 IP)는 사용하지 않을 때 과금이 되므로 생성 후에, 반드시 인스턴스에 연결합시다.

Static IP가 무려 공짜입니다.

 

 

 

 

 

3.  서버 접근

Port가 정상적으로 접근이 되는지 보통 텔넷을 주로 사용하는데, Windows 기능 켜기/끄기에서 텔넷 클라이언트를 설치합시다. (굳이 할 필요는 없습니다.)

 

 

잘 접근됩니다.

 

접근하기에 앞서 로그인하는 ID를 알아야 하는데, 아마존 메뉴얼에 명시되어 있습니다.

저는 Amazon Linux로 생성하였으니, ec2-user로 로그인하게 되겠습니다.

생성한 OS에 따라 ID가 다르니 확인합시다.

 

 

이후 SSH 접근 툴을 사용해야하는데 일반적으로 Putty를 사용합니다만, 모바텀이나 mremote건 서드파티 SSH 툴을 사용하는건 본인 자유입니다.

Putty를 사용할때는 Connection - SSH - Auth - Credentials 에서 키를 등록해주세요.

 

 

이후 Host Name에 ec2-user@탄력적 IP, Port는 별도로 설정한게 없으니 기본 포트인 22 로 입력하고, 해당 세션 값을 저장하기 위해 Saved Sessions에 이름 지정 후 저장을 누르시면 다음에도 해당 이름을 Load하여 재사용 할 수 있습니다.

 

해당 세션으로 Putty Configuration에서 Open을 누르게 되면 아래와 같이 SSH 세션에 접근 하게 됩니다.

 

 

 

 

4. 설치

일반적으로 OpenVPN을 설치하게 되면 조금 복잡스럽니다, 그냥 github에서 사람들이 배포하는걸로 사용하면 편하니 그걸로 사용합시다.

https://github.com/angristan/openvpn-install

 

GitHub - angristan/openvpn-install: Set up your own OpenVPN server on Debian, Ubuntu, Fedora, CentOS or Arch Linux.

Set up your own OpenVPN server on Debian, Ubuntu, Fedora, CentOS or Arch Linux. - angristan/openvpn-install

github.com

 

호환성에서 지원을 잘하는 걸로 보이네요

 

 

이제 호환성도 확인했으니 설치 해봅시다.

[ec2-user@ovpn ~]$ sudo -i
[root@ovpn ~]# yum install -y git

# 위에 설치 끝나고
[root@ovpn ~]# git clone https://github.com/angristan/openvpn-install.git
[root@ovpn ~]# cd openvpn-install
[root@ovpn ~]# ./openvpn-install.sh 

# openvpn-install.sh 가 실행안될 때
[root@ovpn ~]# chmod +x openvpn-install

 

 

위 같이 설정하고 나면 스크립트가 알아서 설치를 하는데 중간에 한번 ID를 기입하는 설정이 있습니다.

아래와 같이 나오니 지정하면 끝입니다.

 

설치가 끝나면 하단에 *.ovpn 이라는 파일이 생성이 되는데 이게 패스워들 대신 할 인증서 입니다.

(나중에 쓰이니 꼭 기억합시다.)

 

열어보면 conf 값과 인증서가 같이 들어있는 걸 보실 수 있을겁니다.

 

 

설치는 끝났으니 실행합시다.

[root@vpn ~]# systemctl start openvpn-server@server

 

는 실행이 안됩니다.

 

 

로그(/var/log/message)를 까봅시다.

server.conf가 없다고 합니다.

 

설정 값이 있는지 확인해봐야하니 설치 경로에 들어가서 확인해봅시다.

[root@vpn ~]# cd /etc/openvpn/

 

 

웬걸 온전히 다 있습니다.

 

보통 이럴 땐 systemd 설정이 잘못 된 경우가 많기 때문에 확인해봐야 할 것 같습니다.

[root@vpn ~]# systemctl status openvpn-server@server.service

 

systemd unit 위치를 확인 했으니 까봅시다.

역시나 WorkingDirectory 값이 잘못 되었습니다.

키보드 i를 누르고 입력모드로 들어간 후에 /etc/openvpn 으로 수정한 후 ESC - :wq - Enter

 

이제 잘 됩니다.

 

네트워크 인터페이스 잘 생성 되었습니다.

 

포트도 잘 올라왔습니다.

 

 

5. 접속

클라이언트용 OpenVPN을 설치합시다. 

https://openvpn.net/client/

 

OpenVPN Connect - VPN For Your Operating System | OpenVPN

Download the official OpenVPN Connect client VPN software for your operating system, developed and maintained by our experts. Get started with our VPN software.

openvpn.net

 

다운로드 받고 실행합시다.

 

 

설정 할 내역은 딱히 없고 Next 만 누르세요.

 

이제 *.ovpn 파일(4. 설치 내역 참고)을 SFTP던 FTP던 VPN을 접속할 PC로 가져와야합니다.

그냥 cat 으로 vpn 설정값을 열어준다음 아래처럼 클릭해서 긁어서 메모장에 열어서 Ctrl+v 하면 값을 가져 올 수도 있습니다.

 

 

만약에 메모장에 값을 복사한 경우라면 확장자를 ovpn으로 꼭 바꿔주세요.

 

UPLOAD FILE 클릭

 

 

이 상태에서 아까 저장한 *.ovpn 파일을 넣어줍시다.

 

파일을 Import 하였으면 Connect를 눌러주세요.

 

 

이렇게 CONNECTED가 나오면 접속 된겁니다.

 

- VPN Off

 

- VPN On

 

 

이렇게 구축이 완료되었습니다.

 

하지만 맨 처음에도 말했던 것 처럼 이런 AWS 공인 IP는 웹서비스에서 자체적으로 막는 경우가 잦으니 안되는 경우도 많습니다.

 

6. 여담

인증서는 하나당 하나의 사용자를 처리할 수 있습니다.

따라서 여러 사용자가 사용하기 위해서는 추가를 해야하는데, 이때 설치 때 사용하였던 스크립트로 사용자를 간편하게 추가 할 수 있습니다.

 

이렇게 추가된 *.ovpn 파일을 다른 사용자에게 주면 됩니다.

반응형

'Linux' 카테고리의 다른 글

[Linux] Squid 프록시 설치  (0) 2023.09.21
[Linux] IPTables 개념  (0) 2023.09.21
CentOS 6 repolist  (0) 2023.09.20
CentOS 7 repolist  (0) 2023.09.20
OpenSSL 설치 및 업그레이드  (0) 2023.09.20
반응형

타르코프를 하시는 분은 SPT(singleplayer Tarkov Project)를 잘 알고 있을 것입니다.

PVP 기반의 FPS를 싱글플레이 게임으로 변경하여 즐기는 모드입니다.

 

이 SPT라는 모드에 fika 모드를 추가하게 되면 멀티플레이를 지원하는데 그러면 PVE로 친구들과 같이 즐길 수 있습니다.

이전의 sitcoop라는 모드도 있었지만 매우 불안정하고, 기존의 SPT 모드를 별도로 포팅해야 할 수 있어서 매우 불편했습니다. (지금은 사실상 사장된 모드)

 

필자는 개인 서버 겸, NAS 겸 24/7 굴려먹는 맥미니가 있는데 이 SPT AKI는 exe,dll 을 사용을 하다보니 리눅스 기반에서는 어떻게 올릴 수 있을까 고민하다 도커로 사용하기로 했고, SPT를 Mac에 도커로 구성하고 FIKA를 설치하였습니다.

 

이런 컨테이너 방식이 아닌 a to z 하게 구성을 하면, 와인부터 시작하여 구성을 전부 다시하여야 하고.. 버전업이 되면 관리하기가 너무 어려워 저는 도커로 진행하는 것을 추천드립니다.

 

궁금하신 분은 하기 링크 읽어보시면 될 것 같습니다.

https://dev.sp-tarkov.com/MadByte/Linux-Guide/src/branch/main/README.md

 

Linux-Guide/README.md at main

Here you can find everything you need to install & play SPT on Linux. Bug reports If you encounter an issue while playing SPT on Linux, do NOT report it to the dev's unless you're 100% sure it affects Windows installations as well. If possible, verify the

dev.sp-tarkov.com

 

 

 

 

 

1. SIT 설치

참고한 GIT은 아래의 링크입니다.

 

https://github.com/umbraprior/SPT.Docker

 

GitHub - umbraprior/SPT.Docker

Contribute to umbraprior/SPT.Docker development by creating an account on GitHub.

github.com

 

 

git clone https://github.com/umbraprior/SPT.Docker.git
cd SPT.Docker

 

Dockerfile을 열어보면 SPT_BRANCH라고 버전을 지정하는 부분이 있는데, 여기서 사용할 버전을 기입하면 됩니다.

 

작성일 기준으로 최신 버전은 3.9.1 이지만

https://hub.sp-tarkov.com/

 

Dashboard - SPT Mods Workshop

Service to the hub homepage, forum, and gallery have been restored. If you prefer the emergency page, it can still be accessed directly. Downloading any EFT version outside of it's official way will get you banned. If we find out that you downloaded EFT il

hub.sp-tarkov.com

 

필요한 모드를 설치할 때 버전이 높으면 호환이 안되는 부분이 있으니 반드시 확인하고 버전을 선택하세요.

 

docker build --no-cache  --label fikaa -t ${저장할 이미지 이름 (예: fika)}

 

 

 

빌드가 완료 된 후에 image를 조회 해보시면 빌드된 이미지를 확인 할 수 있습니다.

 

docker run 으로 해당 이미지를 실행합시다.

docker run --pull=never -v /${SPT 설치 경로}/SPT.Docker/server:/opt/server -p 6869:6969 -p 6870:6970 -p 6871:6971 -p 6872:6972 -it --name ${컨테이너명} ${이미지명}

# 저는 기존 서버가 존재하므로 6869:6969로 포트포워딩이 지정되어있습니다.
# 별도로 다른 포트 (예: 8080포트를 서버 접근 포트로 지정하고 싶으면 8080:6969) 로 지정해주세요.

 

 

run 실행 후에 mount 된 가상 경로에 리얼 데이터를 copy하는데, 해당 작업 이후로 컨테이너가 종료됩니다.

이후 server 디렉토리에 접근하게 되면 각 데이터들이 있는데 delete_me 를 삭제 한 후에 docker run 이 아닌, docker start로 종료된 컨테이너를 다시 시작해주세요.

 

 

이후 정상적으로 실행이 되었는지 확인하기 위해 docker logs -f ${컨테이너명}로 확인합시다.

정상적으로 구동되는 모습

 

이후 fika 모드를 넣으시면 됩니다.

 

https://github.com/project-fika/Fika-Server

 

GitHub - project-fika/Fika-Server: Server-side changes to make multiplayer work

Server-side changes to make multiplayer work. Contribute to project-fika/Fika-Server development by creating an account on GitHub.

github.com

 

모드를 다운로드 받아서 ftp로 직접 넣거나, wget을 통해서 서버에서 직접 받아 압축을 풀어 넣거나 해당 부분은 본인의 자유 입니다.

 

/${설치경로}/SPT.Docker/server/user/mods/fika-server

 

파일 업로드 후에 docker rm -f ${컨테이너명} 으로 완전히 컨테이너를 삭제하고, 다시 재기동 합시다.

(delete_me는 시작할때마다 새로이 생성되므로, 삭제 후에 docker start로 다시 기동해주세요.)

 

모드가 적용된 SPT

 

그럼 이제 카파컨 따러갑시다.

반응형
반응형

해당 게시글은 기록과 자료 공유를 위해 작성합니다.

 

NKS로 구성된 쿠버네티스 시스템에서 워커노드를 재부팅 이후로 시스템이 무너지는 현상이 발생했는데, 조회를 해보니 calico, CSI, kube-proxy 같은 코어 이미지들이 워커노드에 존재하지 않아 컨테이너가 올라오지 못해 발생하였습니다.

 

이는 k8s에서 노드의 디스크 용량이 부족하게 될 경우에 가비지 컬렉션이 동작하여 특정 기간 동안 사용되지 않은 이미지들을 삭제하여 용량을 확보를 하는데, 해당 코어 이미지가 삭제가 되고 난 이후로 레지스트리에서 자동으로 받아오지 못하여 워커노드가 무너지는 현상이었습니다.

https://kubernetes.io/ko/docs/concepts/architecture/garbage-collection/

 

가비지(Garbage) 수집

쿠버네티스가 클러스터 자원을 정리하기 위해 사용하는 다양한 방법을 종합한 용어이다. 다음과 같은 리소스를 정리한다: 종료된 잡 소유자 참조가 없는 오브젝트 사용되지 않는 컨테이너와 컨

kubernetes.io

 

 

이는 특히 폐쇄망 환경으로 이루어진 쿠버네티스 클러스터에서 발생하기 쉬운데, 이는 Habor 같은 사설 레지스트리에 이

미지 파일을 별도 관리하거나 Proxy 등을 통해 해결하여야 합니다.

https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/

 

Pull an Image from a Private Registry

This page shows how to create a Pod that uses a Secret to pull an image from a private container image registry or repository. There are many private registries in use. This task uses Docker Hub as an example registry. 🛇 This item links to a third party

kubernetes.io

 

 

또는 워커노드에 nerdctl 등을 통해 ImagePullBackOff가 발생하는 이미지를 직접적으로 받아 온 후에 컨테이너를 살리는 방법이 있습니다.

 

이미지를 받아오는 방법은 두가지 정도로 제안될 수 있는데, 공식 레포지토리에서 받아오거나, NHN 레지스트리에서 받아오는 방법입니다.

 

1. 공식 레포지토리

# 공식 레포지토리
kubernetesui/dashboard
k8s.gcr.io/pause
k8s.gcr.io/kube-proxy
kubernetesui/dashboard
kubernetesui/metrics-scraper
quay.io/coreos/flannel
quay.io/coreos/flannel-cni
calico-kube-controllers
calico-typha
calico-cni
calico-node
coredns/coredns
k8s.gcr.io/metrics-server-amd64
....

# Kube-proxy 이미지를 복구하고 싶은 경우
nerdctl pull k8s.gcr.io/kube-proxy/[$Failed Image]
nerdctl tag k8s.gcr.io/kube-proxy/[$Failed Image]
nerdctl rmi k8s.gcr.io/kube-proxy/[$Failed Image]

 

2. NHN 레지스트리

nerdctl pull harbor-kr1.cloud.toastoven.net/container_service/[$Failed Image] # 이미지를 가져옴
nerdctl tag harbor-kr1.cloud.toastoven.net/container_service/[$Failed Image] # 가져온 이미지명을 Yaml에서 요구하는 이미지로 변경
nerdctl rmi harbor-kr1.cloud.toastoven.net/container_service/[$Failed Image] # 변경전 이미지 삭제

 

 

 

이미지 장애 상태 구현하기 위해 coredns의 yaml을 수정하여 불능 상태로 만들었습니다.

이미지 버전을 1.8.41234로 변경
모든 이미지는 삭제

 

현재 워커노드에 1.8.41234 버전이 없기 때문에 장애가 발생

 

 

복구 과정은 아래와 같습니다.

NHN 레지스트리에서 1.8.4 버전을 PULL한 다음 TAG로 이미지명 변경

 

 

1.8.4 버전을 PULL 하였지만 YAML의 버전은 1.8.41234로 지정되어 여전히 복구가 불가한 모습

 

TAG로 1.8.41234를 생성하였을 때, 자동으로 복구가 된 모습

 

반응형