반응형

분류 전체보기 68

OpenVPN 클라이언트 설정 파일을 자동으로 생성하는 Python 스크립트

회사나 팀에서 OpenVPN을 사용하다 보면 새로운 사용자가 추가될 때마다 인증서를 생성하고 설정 파일을 만드는 작업이 반복됩니다. 한두 명이야 수동으로 할 수 있지만, 여러 명의 사용자를 한번에 처리해야 할 때는 상당히 번거로운 작업이죠.이런 반복 작업을 자동화하기 위해 Python 스크립트를 만들어 보았습니다.🤔 왜 만들게 되었나요?OpenVPN에서 새로운 클라이언트를 추가하는 일반적인 과정은 다음과 같습니다:Easy-RSA로 클라이언트 인증서 생성개인 키 생성서버 설정과 인증서를 조합해서 .ovpn 파일 생성사용자에게 전달이 과정을 여러 사용자에게 반복하다 보면 실수할 가능성도 높아지고, 시간도 많이 걸립니다. 특히 회사에서 새로운 팀원들이 동시에 여러 명 들어올 때는 더욱 그렇죠.🛠️ 스크립트..

AWS 2025.07.09

www 도메인은 되는데 naked domain 접속이 안될 때 - DNS 라우팅 문제 해결

오늘 클라이언트로부터 도메인 접속 문제가 발생했다는 연락을 받았다. 문제를 파악하고 해결한 과정을 기록해둔다.문제 상황www.example.com은 정상 접속 됨example.com은 접속 불가 (www 없는 naked domain)사용자들이 브라우저 주소창에 example.com을 입력했을 때 페이지가 뜨지 않는 상황이었다.문제 분석DNS와 도메인 기본 개념먼저 기본 개념부터 정리하자면:Naked Domain: www가 없는 도메인 (example.com)Subdomain: www가 붙은 도메인 (www.example.com)A Record: 도메인을 IP 주소로 매핑하는 DNS 레코드ALB (Application Load Balancer): AWS의 로드밸런서 서비스문제 원인 파악DNS 설정을 확인해..

AWS 2025.07.04

AWS 다중 계정 비용 관리 시스템 구축

프로젝트 배경Payer 계정에서 여러 링크 계정의 AWS 비용을 효율적으로 관리하고 모니터링하기 위한 시스템을 구축하였습니다. 각 계정의 비용을 개별적으로 확인하는 것이 아니라, 통합된 리포트를 정기적으로 이메일로 받아볼 수 있는 자동화된 솔루션을 개발하였습니다.최종 구현 결과결과적으로 Lambda + SNS + EventBridge + S3를 조합하여 다음과 같은 시스템을 구축하였습니다:1. 데이터 수집 (각 링크 계정)Lambda 함수: cost-explorer.py역할: 개별 계정의 비용 데이터를 Cost Explorer API로 조회저장: 계정별 S3 버킷에 JSON 형태로 저장실행 주기: EventBridge 스케줄러로 하루 2회 (12시, 18시)2. 데이터 통합 (Payer 계정)Lambda..

AWS 2025.07.03

Amazon EKS 실습 환경 구축하기

최근 Kubernetes 관련 업무를 하면서 Amazon EKS(Elastic Kubernetes Service)에 대해 더 깊이 알아보고 싶어서 실습 환경을 구축해보기로 했다. AWS EKS Workshop을 활용한 실습 환경 구축 과정을 정리해보려고 한다.시작하기 전에 알아두어야 할 것들실습을 진행하면서 몇 가지 주의사항이 있어서 미리 체크해보는 것이 좋다:VPC 제한: 각 리전당 VPC는 기본적으로 5개까지만 생성할 수 있다. 현재 사용 중인 VPC 개수를 확인하고 여유가 있는지 체크해보자.Elastic IP 제한: 마찬가지로 Elastic IP도 5개 제한이 있으니 확인이 필요하다.Default VPC: 없으면 환경 구축에 실패할 수 있어서 다른 리전을 선택해야 한다.cloud9 기존 사용자여야한..

AWS 2025.06.24

PIM over GRE 터널 알아보기

1. 기본 개념부터 시작멀티캐스트(Multicast)란?일반적인 통신: 1:1 (유니캐스트) 또는 1:모든사람 (브로드캐스트)멀티캐스트: 1:관심있는 그룹 (예: 화상회의, 라이브 스트리밍)마치 유튜브 라이브처럼 한 명이 송출하면 구독자들만 받는 것과 비슷합니다GRE(Generic Routing Encapsulation )터널이란?두 네트워크를 인터넷을 통해 연결하는 "가상 전용선"예: 서울 본사와 부산 지사를 마치 직접 연결된 것처럼 만드는 기술PIM (Protocol Independent Multicast)란?멀티캐스트 라우팅 프로토콜"누가 어떤 그룹의 데이터를 원하는지" 관리Sparse Mode: 명시적으로 요청한 곳에만 전송Dense Mode: 일단 모든 곳에 보내고, 안 받겠다는 곳은 차단2. ..

카테고리 없음 2025.06.10

기업 통합시스템의 핵심 구성요소: FEP, EAI, MGA 간단 정리

이번에 업무하면서 FEP를 많이 듣고 정리할 생각이 들어서 관련된 내용인 MGA랑 EAI도 같이 정리할 겸 포스팅하게 됐다. 각각 서로 다른 역할을 하는 중요한 개념들이니 하나씩 제대로 알아보자.🌐 FEP (Front End Processor) - 대외거래의 관문Front End Processor는 외부 기관이나 파트너사와의 거래를 담당하는 전용 프로세서다.핵심 역할외부 통신 관리: 다양한 외부 시스템과의 통신 처리프로토콜 변환: 내부와 외부 시스템 간 프로토콜 중개보안 처리: 인증, 암호화, 방화벽 기능메인 시스템 부하 경감: 전처리를 통한 성능 최적화실무 적용 시나리오은행 업무 사례[타행 ATM] → [FEP] → [계정계 시스템]타행 ATM에서 우리 은행 계좌 출금 요청FEP가 타행 프로토콜을 받..

카테고리 없음 2025.06.09

CentOS 8에서 DNF 패키지 설치 오류 해결하기

문제 상황CentOS 8로 POC를 진행하다가 갑자기 dnf install 명령어가 먹통이 되었다. 이전에는 잘 되던 것 같은데 왜 갑자기 안 되는 건지... 🤔[centos@ip-172-31-35-71 ~]$ sudo dnf install vimCentOS Stream 8 - AppStream 0.0 B/s | 0 B 00:00Errors during downloading metadata for repository 'appstream': - Curl error (6): Couldn't resolve host name for http://mirrorlist.centos.org/?release=8-stream&arch=x86..

카테고리 없음 2025.06.05

AWS CodeBuild, CodeDeploy를 사용한 CI/CD 구축

AWS에서 CodeBuild, CodeDeploy를 사용해서 CI/CD를 구축하는 과정에서 무엇이 어려웠는지, 시간이 걸렸는지 작성해보려고 한다. GitLab Self-managed와 AWS 서비스를 연동하면서 겪었던 시행착오와 해결 과정을 상세히 기록했다.🎯 프로젝트 목표소스: GitLab Self-managed (nginx 웹서버)빌드: AWS CodeBuild (Docker 이미지 빌드 → ECR 푸시)배포: AWS CodeDeploy (EC2 인스턴스에 컨테이너 배포)트리거: main 브랜치 merge 시 자동 배포📋 전체 아키텍처GitLab (dev → main merge) ↓ WebhookCodePipeline ↓CodeBuild (Docker 빌드) → ECR ↓Co..

AWS 2025.05.27

AWS ALB 이름 변경하려고 삭제하고 새로 만든 과정

상황ALB 이름을 변경하려고 했는데, AWS에서 ALB는 생성 후 이름 변경이 안된다는 걸 알았다. 그래서 기존 ALB를 삭제하고 새로운 ALB를 만드는 과정을 기록해본다.변경 대상:기존: OLD-WEB-ALB신규: NEW-WEB-ALB연결된 도메인:odev.example.co.krodev.demo.co.krwww.example.co.kr영향도 체크부터 했어야 했는데ALB 삭제하기 전에 뭐가 연결되어 있는지 확인해야 했다.확인해야 할 것들DNS 설정: Route 53 레코드들리스너 구성: HTTP/HTTPS 포트 및 규칙타겟 그룹: 연결된 인스턴스들보안 그룹: ALB 및 인스턴스 보안 설정SSL 인증서: ACM 인증서 연결 상태CloudTrail에서 삭제된 ALB 구성을 찾아보는 과정이 좀 귀찮았다:# ..

AWS 2025.05.27

RDS, Aurora PostgreSQL 자동 시작/중지 스케줄링 SSM(System Manager)으로 구현

Aurora PostgreSQL RDS를 DB instance로만 스케줄링 걸려고 했는데, Aurora는 DB Cluster 단위로만 Scheduling이 걸리는 것을 알게 됐다. 그래서 이 글을 쓰게 된다.문제 발견: Aurora는 인스턴스 단위가 아니다처음에는 일반적인 RDS MySQL처럼 개별 DB 인스턴스를 시작/중지하려고 했다. AWS Systems Manager Maintenance Windows를 사용해서 AWS-StopRdsInstance 문서로 자동화를 구성했는데, 다음과 같은 에러가 발생했다:An error occurred (InvalidParameterCombination) when calling the StopDBInstance operation: aurora-postgresql D..

AWS 2025.05.26
반응형