1. ์ฉ์ด ๋ฐ ๊ฐ๋ ์ ๋ฆฌ
[1] VPC
ํผ๋ธ๋ฆญ ํด๋ผ์ฐ๋ ์์์ ์ ๊ณต๋๋ ์ฌ์ค ๋คํธ์ํฌ (private network)์ด๋ฉฐ, ๊ฐ์์ ๋ฐ์ดํฐ ์ผํฐ์ ๊ฐ๋ค. IP์ฃผ์ ๋ฒ์, VPC ๋ฒ์๋ฅผ ์ค์ ํด ์ธ๋ถ์ ๊ฒฉ๋ฆฌ๋ ๋คํธ์ํฌ ์ปจํ ์ด๋๋ฅผ ๊ตฌ์ฑํ ์ ์๋ค. ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ ๋ฆฝ๋ ๊ฐ์ ๋คํธ์ํฌ๋ ์ธ๋ถ ๋คํธ์ํฌ ํต์ ์ ์ด, VPC ๋ด๋ถ ํต์ ์ค์ ์ ํตํด ๋ณด์์ ์ธ ์ด์ ์ ์ ๊ณตํ๋ค. ์ฐธ๊ณ ๋ก AWS VPC ๋ ๋ฆฌ์ ๋จ์๋ก ์๋น์ค๋ฅผ ์ ๊ณตํ๋ค.
[2] subnet
VPC ์ ํ์ ๋จ์๋ก VPC ์ ํ ๋น๋ IP ๋ฅผ ๋ ์์ ๋จ์๋ก ๋ถํ ํ ๊ฐ๋ ์ ๋งํ๋ค. ํ๋์ ์๋ธ๋ท์ ํ๋์ ๊ฐ์ฉ์์ญ(AZ) ์์ ์์นํ๋ฉฐ, CIDR block range ๋ฅผ ํตํด IP ์ฃผ์ ๋ฒ์๋ฅผ ์ง์ ํ ์ ์๋ค.
๊ฐ subnet ์ IP ํ ๋น ๊ฐฏ์๋ 2^(32 - ํธ์คํธ ์ฃผ์ ํ ๋น ์ซ์) ๋ฅผ ํตํด ์ฐ์ฐํ๋ค. ์๋ฅผ ๋ค์ด 10.0.0.0/26 ์ด๋ผ๋ฉด 2^(32 - 26) = 64๊ฐ์ ip ๊ฐฏ์๋ฅผ ํ ๋นํ ์ ์๋ค. ํ์ง๋ง AWS ์์ subnet ์ ๊ตฌ์ฑํ๋ ๊ฒฝ์ฐ 5๊ฐ์ IP ๊ฐฏ์๋ฅผ ์ ์ธํ๊ณ ๊ณ์ฐํด์ผ ํ๋ค. AWS ์์ subnet ์ ๊ตฌ์ฑํ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ ์ด์ ๋ก ์๋์ผ๋ก 5๊ฐ์ IP ์ฃผ์๋ฅผ ํ ๋นํ๋ฉฐ ์ต์ข ์ ์ผ๋ก ํ ๋น๋๋ IP ์ ๊ฐฏ์๋ 64 - 5 = 59๊ฐ์ด๋ค. ๋ง์ฝ ์ํ๋ IP ํ ๋น ๊ฐฏ์๊ฐ 64๊ฐ๋ผ๋ฉด ์ค์ ํ ๋นํ๋ IP ๋ 64๊ฐ ๋ณด๋ค ๋ ๋ง์์ผ ํ๋ค.
- subnet ์ค์ ์ด 10.0.0.0/24 ๋ผ๋ฉด?
- 10.0.0.0 : network address
- 10.0.0.1 : VPC router
- 10.0.0.2 : DNS Server
- 10.0.0.3 : ๋ฏธ๋ ์ฌ์ฉ์ ์ํด ๋จ๊ฒจ ๋
- 10.0.0.255(๋ง์ง๋ง ์ฃผ์) : network broadcast address (๋จ broadcast ๋ฅผ ์ ๊ณตํ์ง ์์)
์๋ธ๋ท ์ข ๋ฅ์๋ public subnet ๊ณผ private subnet ์ด ์กด์ฌํ๋ค. public subnet ์ ์ธ๋ถ์์ ์ธํฐ๋ท ์ฐ๊ฒฐ์ ํตํด ํต์ ํ ์ ์๋ ์๋ธ๋ท์ ๋งํ๋ค. internet gateway ๋ฅผ ํผ๋ธ๋ฆญ ๋ผ์ฐํ ํ ์ด๋ธ์ ๋ฑ๋กํด ์ธ๋ถ ์ธํฐ๋ท๊ณผ ํต์ ๊ฐ๋ฅํ ์ํ๋ก ๊ตฌ์ฑํ ์ ์๋ค. ๋ด๋ถ์ ์์นํ ์ธ์คํด์ค์ public IP ๋ฅผ ๋ถ์ฌํ ์ ์์ผ๋ฉฐ ์น ์๋ฒ, ์ดํ๋ฆฌ์ผ์ด์ ์๋ฒ ๋ฑ ์ ์ ์๊ฒ ๋ ธ์ถํ๋ ์ธํ๋ผ๋ฅผ ๊ตฌ์ฑํ๋ ๊ณต๊ฐ์ด๋ค. private subnet ์ ์ธ๋ถ์์ ์ธํฐ๋ท ์ฐ๊ฒฐ์ ํตํด ํต์ ํ ์ ์๋ ์๋ธ๋ท์ ๋งํ๋ค. (์ฐธ๊ณ ๋ก, ์ธ๋ถ์์ private subnet ์ผ๋ก ํต์ ์ด ๋ถ๊ฐํ์ง๋ง private subnet ์์ ์ธ๋ถ์์ ํต์ ์ NAT interface ๋ฅผ ๊ตฌ์ฑํด ์ธ๋ถ์์ ํต์ ์ด ๊ฐ๋ฅํ๋ค.) public IP ๋ถ์ฌ๊ฐ ๋ถ๊ฐ๋ฅํ๋ฉฐ DB ์ ๊ฐ์ ์ธ๋ถ ๋ ธ์ถ์ด ํ์์๋ ์ธํ๋ผ์์ ๋ง์ด ์ฌ์ฉํ๋ค.
[3] route table
route table ์ router ๊ฐ ๋ค๋ฅธ ๋ง๊ณผ์ ์๋ฒ ํต์ ํ๊ธฐ ์ํด ์ฐธ๊ณ ํ๋ ํ ์ด๋ธ์ด๋ค. route table ์ destination ์ target ์ ์ปฌ๋ผ์ผ๋ก ํ ์ด๋ธ์ด ๊ตฌ์ฑ๋๋๋ฐ destination ์ํธ๋ํฝ์ ์ด๋ํ ๋์ IP ์ฃผ์ ๋ฒ์, target ์ ๋์ ํธ๋ํฝ์ ์ ์กํ ๋ ์ฌ์ฉํ ๊ฒ์ดํธ์จ์ด, ๋คํธ์ํฌ ์ธํฐํ์ด์ค๋ฅผ ์ง์ ํ๋ค.
route table ์ ๊ตฌ์ฒด์ ์ธ ์๋ธ๋ท ๋ง์คํฌ ์ซ์๊ฐ ํฐ ๊ฒ์ ๋์ ์ฐ์ ์์๋ก ํ๋ค. ์๋ route table ์ ๊ธฐ์ค์ผ๋ก IPv4 10.0.1.231 ์ ๋ผ์ฐํ ํด์ผ ํ๋ค๋ฉด ํธ์คํธ ์ฃผ์ ํ ๋น ์ซ์๊ฐ 10.0.0.0/16 ์ destination ์ผ๋ก ๊ธฐ์ค์ผ๋ก local ๋ก ๋ผ์ฐํ ํ๋ค.
(์ฐธ๊ณ ๋ก, ๋ผ์ฐํฐ(Router) ๋ ์ต์ข ๋ชฉ์ ์ง๋ฅผ ๊ฐ๊ธฐ ์ํด ์ด๋๋ก ํจํท์ ๋ณด๋ด๋ ๊ฒ์ด ์ต์ ๊ฒฝ๋ก์ธ์ง ํ์ตํ๋ฉฐ ๋ผ์ฐํ ์ ๋ณด๊ฐ ์์ ๋๋ ํด๋น ์์ฒญ์ Forwarding ํ์ฌ target ์ผ๋ก ์ ๋ฌํ๊ณ ๋ผ์ฐํ ์ ๋ณด๊ฐ ์์ ๋ Drop ํ์ฌ ์์ฒญ์ ๋ฒ๋ฆฐ๋ค.)

[4] internet gateway
VPC ๊ฐ ์ธ๋ถ์ ์ธํฐ๋ท๊ณผ ํต์ ํ ์ ์๋๋ก ๊ฒฝ๋ก๋ฅผ ๋ง๋ค์ด์ฃผ๋ ์์ค์ด๋ค. IPv4, IPv6 ๋ฅผ ์ง์ํ๋ฉฐ IPv4 ๋ NAT ์ญํ ์ ํ๋ค. Route table ์ ํตํด ์ ๊ทผ ๊ฐ๋ฅํ๋ฉฐ ๋ฌด๋ฃ์ธ ์๋น์ค์ด๋ค.
- gateway...??
- ์๋ก ๋ค๋ฅธ ํต์ ๋ง ํน์ ํ๋กํ ์ฝ ๊ฐ ๋คํธ์ํฌ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ๊ตฌ์ฑ์์
- ์์
- internet gateway : ์ธํฐ๋ท ๋ง๊ณผ ์ฐ๊ฒฐ์ ์ค๊ณํ๋ ์์
- NAT gateway : private IP ๋ฅผ public IP ๋ก ๋ณํํ๋ ๊ตฌ์ฑ์์ (AWS ์์ ์ฝ๊ฒ ์์ฑ ๋ฐ ๊ด๋ฆฌํ๋๋ก ์ ๊ณต)
[5] CIDR(Classless Inter Domain Routing)
IP์ฃผ์ ์์ญ์ ์ฌ๋ฌ ๋คํธ์ํฌ ์์ญ์ผ๋ก ๋๋๊ธฐ ์ํด IP ๋ฅผ ๋ฌถ๋ ๋ฐฉ์์ด๋ฉฐ ์ฌ๋ฌ ๊ฐ์ ์ฌ์ค๋ง์ ๊ตฌ์ถํ๊ธฐ ์ํด ๋ง์ ๋๋๋ ๋ฐฉ๋ฒ์ด๋ค. CIDR Block ์ IP ์ฃผ์์ ์งํฉ์ด๋ฉฐ ์ด๋ CIDR Notation ์ ํตํด CIDR Block ์ ํํํ๋ค. CIDR Notation ์ A.B.C.D/E ํ์์ผ๋ก ํํํ๋ฉฐ A,B,C,D ๋ ๋คํธ์ํฌ ์ฃผ์์ ํธ์คํธ ์์ญ์ ํ์ํ๊ณ E ๋ ๋คํธ์ํฌ ์ฃผ์๊ฐ ๋ช bit ์ธ์ง๋ฅผ ๋ํ๋ธ๋ค.
[6] NAT(Network Address Translation)
private IP ๋ฅผ public IP ๋ก ํต์ ํ ์ ์๋๋ก ์ฃผ์๋ฅผ ๋ณํํ๋ ๋ฐฉ๋ฒ์ด๋ค. private IP ๋ ํ์ ๋ IP์ฃผ์๋ฅผ ์ต๋ํ ํ์ฉํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ค๋ง ๋ด๋ถ์ ๋ณ๋์ IP ๋ฅผ ํ ๋นํ๊ณ ์ธ๋ถ์ ํต์ ํ๊ธฐ ์ํ public IP ๋ฅผ ๊ณต์ฉ์ผ๋ก ์ฌ์ฉํ๋ ํํ๋ฅผ ๋งํ๋ค. ์ด ๋ private IP ๋ฅผ public IP ๋ก ๋ณํํ๋ ์ญํ ์ ํ๋ ์ฃผ์ฒด์ด๋ค.
NAT ์๋ Dynamic NAT, Static NAT, PAT(Port Address NAT) 3๊ฐ์ง๊ฐ ์กด์ฌํ๋ฉฐ ๊ธฐ๋ฅ์ ์๋์ ๊ฐ๋ค.
- Dynamic NAT : 1๊ฐ์ private IP ๋ฅผ ๊ฐ์ฉ ๊ฐ๋ฅํ public IP ๋ก ์ฐ๊ฒฐ
- Static NAT : 1๊ฐ์ private IP ๋ฅผ ๊ณ ์ ๋ 1๊ฐ์ public IP ๋ก ์ฐ๊ฒฐ (AWS Integernet gateway ์์ ์ฌ์ฉ)
- PAT : ๋ง์ private IP ๋ฅผ 1๊ฐ์ public IP ๋ก ์ฐ๊ฒฐ (AWS NAT gateway ์์ ์ฌ์ฉ)
[7] Security Group
NACL(Network Access Control List) ์ ํจ๊ป ๋ฐฉํ๋ฒฝ ์ญํ ์ ํ๋ ์๋น์ค์ด๋ค. ์ฆ, ์ฐ๊ฒฐ๋ ๋ฆฌ์์ค์ ๋๋ฌํ๊ณ ๋๊ฐ ์ ์๋ ํธ๋ํฝ์ ์ ์ดํ๋ ์ญํ ์ ๋ด๋นํ๋ค. ์ธ๋ฐ์ด๋, ์์๋ฐ์ด๋ ๊ท์น์ ํตํด ์ค์ ์ด ๊ฐ๋ฅํ๋ฉฐ source, port ๋ฒ์ ๋ฐ protocol ์ ์ง์ ํ ์ ์๋ค.
2. AWS ๋ ผ๋ฆฌ๋ง ๊ตฌ์ฑํ๊ธฐ
๋ง๋ค๊ณ ์ ํ๋ ์ธํ๋ผ ๊ตฌ์ฑ

[1] VPC ๊ตฌ์ฑ

[2] subnet ๊ตฌ์ฑ

[3] internet gateway ์ค์

[4] public routing table ์์ฑ ๋ฐ ๋ผ์ฐํ ์ค์
(1) public routing table ์์ฑ

(2) ๋ผ์ฐํ ์ค์
- internet-gateway ์ค์

(3) ์๋ธ๋ท ์ค์

[5] nat gateway ์ค์
(1) subnet ์ค์ , elastic ip ์ค์

[6] private routinng table ์์ฑ
(1) private routing table ์์ฑ

(2) ๋ผ์ฐํ ์ค์
- nat-gateway ์ค์
- ๋ด๋ถ ์์ฒญ์ ๋ด๋ถ๋ก ๋ผ์ฐํ (๋ค๋ฅธ subnet ์ด๋ ํฌํจ)
- ๋๋จธ์ง ์์ฒญ์ nat gateway ๋ก ์ด๋

(3) ์๋ธ๋ท ์ค์

[6] public ec2 ์์ฑ
- OS : Ubuntu ์ค์
- ์ํคํ ์ฒ : x86 ์ ํ
- ์ธ์คํด์ค ์ ํ : t2.micro
- ํค ํ์ด : pem ์ ํตํ ์์ฑ
- network ์ค์ (์๋ ๊ทธ๋ฆผ ์ฐธ๊ณ )
- VPC ์ค์
- public subnet ์ค์
- security group ์ค์ (์๋ ๊ทธ๋ฆผ ์ฐธ๊ณ )
- ICMP : ping check ๋ฅผ ์ํจ
- SSH : ssh client ์ฌ์ฉ์ ์ํจ
- HTTPS : HTTP ํต์ ์ ์ํจ
- ์์ฑ ์๋ฃ ํ, ์ ์ ๋์ check list
- ์ธ๋ถ์์ ping check, port check(telnet), socket communication check


[7] private ec2 ์์ฑ
- OS : Ubuntu ์ค์
- ์ํคํ ์ฒ : x86 ์ ํ
- ์ธ์คํด์ค ์ ํ : t2.micro
- ํค ํ์ด : pem key ์์ฑ
- network ์ค์ (์๋ ๊ทธ๋ฆผ ์ฐธ๊ณ )
- VPC ์ค์
- private subnet ์ค์
- security group ์ค์ (์๋ ๊ทธ๋ฆผ ์ฐธ๊ณ )
- ICMP : ping check ๋ฅผ ์ํจ
- MySQL : public security group ์์ ์์ฒญ์ ๋ฐ๊ธฐ ์ํจ
- SSH : SSH client ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํจ
- ์์ฑ ์๋ฃ ํ, ์ ์ ๋์ check list
- public instance ์์ ping check, port check(telnet), socket communication check
- ์ธ๋ถ์์ private ec2 ์ ์ ๋ถ๊ฐ๋ฅ ์ฌ๋ถ ํ์ธ
- private ec2 ์์ ์ธ๋ถ ์ฐ๊ฒฐ ๊ฐ๋ฅ ํ์ธ (NAT ๋ฅผ ํตํด private subnet → public subnet→ ์ธ๋ถ ํต์ ๊ฐ๋ฅํ์ง ํ์ธ)


3. ์ฐ๊ฒฐ ํ ์คํธ ๋ฐฉ๋ฒ
[1] ping check : remote ip ์ ์ฐ๊ฒฐ ์ฌ๋ถ ํ์ธ
ping [remote ip address]
[2] port check : remote ip + port ์ฐ๊ฒฐ ์ฌ๋ถ ํ์ธ
# debian
telnet [remote ip address] [port number]
[3] ์ธ๋ถ ์๋ฒ ํต์ ํ์ธ
# install library
sudo apt install socket
sudo apt install net-tools
# server socket open
sudo socket -s 443
# server public ip ํ์ธ
curl wgetip.com
# client request connection
telnet [server ip] 443
# connection ์ํ ํ์ธ
sudo netstat -antp | grep 443
4. private instance ์ ์ ๊ทผํ๊ธฐ ์ํ public instance ์ pem key ์ ์กํ๊ธฐ
# scp ๋ช
๋ น์ด
scp [ํ์ผ1] [ํ์ผ2] [์๊ฒฉ์ง id]@[remote ipv4]:[๋ฐ๋ ์์น]
# ์์
scp cooper-workshop-private.pcm ubuntu@[server public ip]:~/keys/
5. trouble shooting
[1] port check fail
- situation
- ping check success / port check ์์ fail ๋๋ ํ์
- cause
- private security group inbound rule ์์ TCP port = 0 ์ผ๋ก ์ค์ ๋์ด ๋ฐ์ํ ๋ฌธ์
- TCP port = 0 ์ผ๋ก ์ค์ ํ ๊ฒฝ์ฐ ๋ชจ๋ port ์ ๊ดํ ์์ฒญ ํ์ฉํ๋ ๊ฒ์ผ๋ก ์คํด
- action
- security gruop inbound TCP port 22 ๋ก ์ฌ์ค์
[2] ๊ธฐ์กด์ ๋ค๋ฅธ EC2 ์ฌ์ฉํ๋ pem key ๋ก public instance ๋ก ์ ๊ทผํ์ง ๋ชปํ๋ ๋ฌธ์

- situation
- ๊ธฐ์กด cooper-infra-public.pem ํ์ผ๋ก ์๋ก์ด EC2 instance ๋ฅผ ์์ฑํ์ฌ ์ธ๋ถ์์ ํด๋น pem key ๋ฅผ ํตํด ์ ๊ทผํ๋ ๊ณผ์ ์์ ๋ฐ์ํ ๋ฌธ์
- cause
- /.ssh/known_hosts ์ ์ ์ฅ๋ remote host public key ์ remote host public key ๊ฐ ์ถฉ๋ํ์ฌ ๋ฐ์ํ ๋ฌธ์
- SSH client ๊ฐ remote host ๋ฅผ ํ์ธํ๊ธฐ ์ํด .ssh/known_hosts ํ์ผ์ ๊ธฐ์กด์ ์ ์ฅ๋ remote ip public key ๋ฅผ ํตํด ๊ฒ์ฆํ๋ ๊ณผ์ ์์ ๋ฐ์ํ ์๋ฌ
- action
- ๊ธฐ์กด EC2 ๋ฅผ ์ฌ์ฉํ๊ณ ์์ง ์๊ธฐ ์์ .ssh/known_hosts ํ์ผ์ remote ip public key ๋ฅผ ์ ๊ฑฐ ๋ฐ ์ฌ์์ฑํ์ฌ ํด๊ฒฐ
- ssh-keygen -R [public instance ip]
Reference
- https://www.inflearn.com/course/%EC%9D%B8%ED%94%84%EB%9D%BC-%EA%B3%B5%EB%B0%A9-%EC%84%9C%EB%B9%84%EC%8A%A4-%EB%A7%8C%EB%93%A4%EA%B8%B0
- https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/configure-your-vpc.html
- https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/VPC_Route_Tables.html
- https://www.youtube.com/watch?v=WY2xoIClOFA
- https://www.youtube.com/watch?v=3VXLD0-Iq8A
- https://ghdwlsgur.github.io/docs/Linux/known_hosts
'๐ education & lecture > ์ธํ๋ผ ๊ณต๋ฐฉ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [์ธํ๋ผ๊ณต๋ฐฉ] ์ปจํผ๋ฐ์ค ์ ์ฒญ - 1. github action ์ ํตํ ๋น๋ ์ค์ (1) | 2024.03.05 |
|---|---|
| [์ธํ๋ผ๊ณต๋ฐฉ] ์งํ์ฒ ๋ ธ์ ๋ - 4. ํ๋ฉด ์๋ต ๊ฐ์ ํ๊ธฐ (0) | 2024.02.29 |
| [์ธํ๋ผ๊ณต๋ฐฉ] HTTP Cache (0) | 2024.02.28 |
| [์ธํ๋ผ๊ณต๋ฐฉ] ์งํ์ฒ ๋ ธ์ ๋ - 3. 3-tier ๊ตฌ์ฑํ๊ธฐ (0) | 2024.02.27 |
| [์ธํ๋ผ๊ณต๋ฐฉ] ์งํ์ฒ ๋ ธ์ ๋ - 2. ์๋ฒ ๊ตฌ์ฑํ๊ธฐ (1) | 2024.02.25 |
