리눅스 명령어 (기본 정도)
네트워크 기초
이중에서 4번 같은 경우는 생략
Terraform은 인프라를 코드로 만들지만,
실제로 다루는 대상은 결국 리눅스 서버다.그래서 최소한의 리눅스 명령어를 모르면
인프라를 만들고도 디버깅, 로그 확인, 서버 접근 자체가 어려워진다.
Terraform은 인프라를 코드로 만들지만,
운영하게될 대상은 리눅스 서버/컨테이너/VM
pwd: 현재 위치 확인ls: 현재 디렉토리 파일 목록cd: 디렉토리 이동mkdir: 디렉토리 생성cp: 파일/디렉토리 복사mv: 파일 이동/이름 변경rm: 파일 삭제cat: 파일 전체 출력less: 스크롤하면서 보기head: 앞부분 확인tail: 뒷부분 확인 (로그 볼 때 많이 씀)grep: 특정 문자열 검색chmod: 권한 변경chown: 소유자 변경ps: 실행 중인 프로세스 확인top / htop: CPU, 메모리 상태 확인curl: HTTP 요청 보내기 (API 테스트할 때 자주 사용)echo $PATHenv# 로그 실시간 보기
tail -f app.log
# 로그에서 error만 찾기
grep "error" app.log
# 로그 실시간 + 필터
tail -f app.log | grep "ERROR"
👉 실제 서버 장애 확인할 때 거의 이 조합을 사용한다.
Mac을 쓰는 경우에도 위 같은 경우를 사용하다 보니
가볍게 다루어 보고 가려고 한다.
pwd
/Users/jaehyungkim/Desktop/Swift/TuistGoolbitg/Real2/goolbitg-iOS
ls
현재 폴더 내부 파일들
cd
경로 이동
cat
concatenate 줄임말 -> 합치다 -> 여라 파일 내용 하나로 합치기
cat filename.txt : 파일 내용 출력
cat file1.txt file2.txt : 파일 내용 이어서 출력
cat -n filename.txt : 행 번호 붙여서 출력
cat file1.txt file2.txt > new_file.txt : 파일 여러개 합쳐서 새로운 파일
...
less = 보여지는 만큼만 출력
head = 앞부분 부터 확인하는 명령어
tail = 뒷부분 부터 확인하는 명령어
grep = 특정 문자열 순환탐색
cp = 디렉토리 또는 파일 복사 명령어
cp_r = [복사 디렉토리] [대상 디렉토리]
mv = 파일 이동
rm = 파일 삭제
mkdir = 디렉토리 생성
chmod = 권한 변경 (파일, 디렉토리 권한)
chown = 권한 변경 (파일, 디렉토리 소유권 변경 ex: Group)
ps = 활성프로세스 출력
top or htop = OS 상태 하단 사진 참고
curl = Network Protocol 를통한 데이터 송수신 명령어
curl http://example.com
curl -O http://example.com/file.zip
curl -X POST -H "Content-Type: application/json" -d '{"name": "user", "age": 25}'
curl -F "file=@/path/to/file.txt"
환경 변수 확인
echo $PATH, env
@참고 자료 : https://monkeybusiness.tistory.com/645

좀 중요하다 결국 인프라이기에 보안, 통신 에 대한 이야기 이게 때문에
이를 좀 어느정도 잡아놔야 한다.
VPC, subnet, route table, internet gateway, NAT gateway, security group
를 다루어 보고자 한다.
@참고자료 : https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html?utm_source=chatgpt.com
subnet 은 VPC 안의 IP주소 범위
route table 은 해당 subnet이나 gateway에서 나가는 트래픽 경로 결정 규칙들
InternetGateway 는 VPC와 인터넷 사이 통신 가능케
NAT Gateway는 private subnet 인스턴스가 외부로 나갈 수 있게 하되 외부에서 먼저 들어오는 연결 차단
Security Group은 연결된 리소스의 인바운드/아웃바운드 트래픽을 제어하는 가상 방화벽

클라우드 안에 가상 네트워크 공간
1. IP 대역을 정한다
2. subnet을 할당한다.
3. route 연결
4. gateway 연결
VPC의 구성요소로써 VPC와 인터넷간에 통신을 할 수 있게 만들어주는 역할
출입문
말 그대로 “이 subnet에서 나가는 패킷을 어디로 보낼지” 정한 규칙표
AWS는 route table을 VPC의 traffic controller라고 표현한다.
서브넷 혹은 게이트웨이를 통해서 네트워크 트래픽이 어디로 향하는지에 대해 결정
- 라우팅 규칙은 목적지 주소에 따른 Next Hop을 지정

서브넷 5개, 기본 라우팅 테이블 1개, 사용자 지정 라우팅 테이블 3개가 포함된 VPC
통신이 안 될 때는 거의 항상 아래 순서로 보자
private subnet 안의 서버가 외부 인터넷이나 외부 서비스로 나갈 수만 있게 해 주는 장치
즉 외부에서 먼저 연결 시도 불가

정의된 규칙에 따라 네트워크 트래픽을 허용하거나 차단하는 보안 시스템
Cloudflare는 이를 신뢰 영역과 비신뢰 영역 사이에 놓여 트래픽을 통제하는 장치
AWS Security Group은 VPC 리소스에 붙는 가상 방화벽
인바운드와 아웃바운드 규칙을 설정하고, 소스/대상, 포트 범위, 프로토콜을 지정
허용된 연결의 응답 트래픽은 별도 규칙 없이도 돌아온다.
어떤 계층의 어떤 서버끼리 말하게 할지 정하는 정책
예시
Example.com 접속! -> 서버가 1대가 아닌 3대로
회사가 소유한 물리적인 서버실, 네트워크 장비, 스토리지 같은 자체 인프라 환경
그럼 AWS는..? -> 클라우드
떙
1. route table은 VPC의 traffic controller
2. route 규칙이 subnet이나 gateway의 트래픽이 어디로 갈지 결정
3. 인터넷 게이트웨이는 VPC route table에서 인터넷으로 향하는 트래픽의 대상(target) 이 됨
4. 라우팅 규칙으로 결정되는거지 public subnet의 유무가 아님!
서버가 어떤 subnet에 있든,
그 subnet이 연결된 route table에 인터넷 방향 경로가 있어야 인터넷으로 나갈 수 있다.
0.0.0.0/0 -> igw-xxxx
Application Load Balancer
클라이언트의 단일 진입점 역할
애플리케이션 계층 트래픽을 여러 대상, AZ(가용영역)으로 분산
웹 서비스 앞에서 HTTP/HTTPS 요청을 받아서 뒤쪽 서버들로 나눠주는 로드밸런서
ALB는 public subnet
App 서버는 private subnet
DB는 private subnet
IP 주소 범위를 표현하는 방법
10.0.0.0/16 처럼 적음
10.0.0.0 이 주소
/16 은 앞 16비트가 네트워크 구간
전 세계적으로 유일하게 식별되는 주소
인터넷에서 직접 라우팅될 수 있는 주소
내부망용 주소
인터넷 공용 라우팅에 직접 쓰이지 않는다.
사설 IP는 내부 네트워크에서만 쓰는 주소다. RFC 1918에서 대표적인 사설 IPv4 대역은 아래 3개다.
인터넷에 연결되는 모든 장비에 공인 IP를 다 줄 수는 없다.
IPv4 주소는 한정되어 있고, 내부 시스템은 인터넷에서 직접 접근될 필요가 없는 경우도 많다.
내부 시스템은 사설 IP를 쓰고, 외부와 통신이 필요할 때는 NAT 같은 방식으로 나가게 만든다.
VPC 내부 EC2는 기본적으로 사설 IP를 가진다.
public subnet에 있는 인스턴스는 경우에 따라 공인 IP를 추가로 받을 수 있지만
내부 통신 자체는 여전히 사설 IP 중심으로 이뤄진다
한 컴퓨터 안에서 어떤 서비스/프로세스에게 트래픽을 보낼지 구분하는 번호
네트워크 연결이 시작되고 끝나는 가상 지점
예를 들어 서버 IP가 10.0.1.15여도,
[사용자 브라우저]
|
| HTTPS 443
v
[ALB / Load Balancer]
|
| HTTP 80 or HTTPS 443
v
[App Server 1]
[App Server 2]
|
| DB Port 3306 or 5432
v
[DB]
VPC (10.0.0.0/16)
├─ Public Subnet A (10.0.1.0/24)
│ ├─ ALB
│ └─ NAT Gateway
│
├─ Public Subnet B (10.0.2.0/24)
│ └─ ALB
│
├─ Private Subnet A (10.0.10.0/24)
│ └─ App Server 1
│
├─ Private Subnet B (10.0.20.0/24)
│ └─ App Server 2
│
└─ Private DB Subnet (10.0.30.0/24)
└─ DB
App Server (Private Subnet)
-> Route Table
-> NAT Gateway (Public Subnet)
-> Internet Gateway
-> Internet
자자 네트워크 아직 끝이 아니에욧