AWS์์ ํ์ด๋ธ๋ฆฌ๋ ๋คํธ์ํฌ๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด Site-to-Site VPN connection ๊ตฌ์ฑ์ ํด์ผ ํ ์ ์์ต๋๋ค. Site to Site VPN์ VPC์ ์จํ๋ ๋ฏธ์ค ๊ฐ์ ์ฐ๊ฒฐ์ ์ํด ์ฌ์ฉํ๊ณ , IPsec VPN ์ฐ๊ฒฐ์ ์ง์ํฉ๋๋ค.
IPsec ์ฐ๊ฒฐ์ ํ๋ ์ด์
VPC์ ์จํ๋ ๋ฏธ์ค ๊ฐ ์ ์ก์ ์์ด์ Direct Connect๊ฐ์ dedicated connection์ ๊ตฌ์ฑํ์ง ์๋ ์ด์ ํ์ฐ์ ์ผ๋ก Internet์ ๊ฑฐ์ณ ํต์ ํด์ผ ํฉ๋๋ค. ๊ทธ๋ ๊ธฐ์ ๋ฐ์ดํฐ๋ฅผ ์ํธํํ์ฌ ๋คํธ์ํฌ๋ฅผ ํตํด ์ ์ก๋๋ ๋์ ๋ฐ์ดํฐ๊ฐ ๋์ฒญ๋๊ฑฐ๋ ํ์ทจ๋์ง ์๋๋ก ๋ณดํธํด์ผ ํฉ๋๋ค. IPsec์ ๋ฐ์ดํฐ ์ํธํ๋ฅผ ์ง์ํ์ฌ ์์ ํ ๋ฐ์ดํฐ ํต์ ์ด ๊ฐ๋ฅํ๋๋ก ๋์์ค๋๋ค.
์ Site-to-Site VPN์ด์ด์ผ ํ๋๊ฐ
Site-to-Site VPN์ AWS์์ ์ ๊ณตํ๋ ๊ด๋ฆฌํ VPN ์๋น์ค์ ๋๋ค. High Availability๋ฅผ ์ํด ๋ ๊ฐ์ ํฐ๋์ ์ ๊ณตํ์ฌ, ํ๋์ ํฐ๋์ด ๋ค์ด๋์ด๋ ๋ค๋ฅธ ํ๋์ ํฐ๋๋ก ํธ๋ํฝ์ ์ฐ๊ฒฐํ ์ ์๋๋ก ๋์์ค๋๋ค. ๋ํ Site-to-Site VPN์ ์ฌ์ฉํ๋ฉด CloudWatch๋ฅผ ํตํด ๋ชจ๋ํฐ๋ง์ด ๊ฐ๋ฅํ์ฌ ๋ค์ํ ์๋๋ฆฌ์ค์์ ํธ๋ฌ๋ธ์ํ ์ ํ ์ ์๋ค๋ ์ ๋ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ด๋ฆฌํ ์๋น์ค์ด๊ธฐ ๋๋ฌธ์ ๋งค๋ด์ผํ IPsec ๊ตฌ์ฑ๋ณด๋ค ํจ์ฌ ๊ฐํธํ๋ค๋ ์ ๋ ์์ต๋๋ค.
Site-to-Site VPN ์ค์ต ํ๊ฒฝ ๊ตฌ์ถ
![s2s1](https://private-user-images.githubusercontent.com/76674422/344911032-7bcfaa39-c9fe-4740-b374-bcec67cac331.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NDAwNjI5NTAsIm5iZiI6MTc0MDA2MjY1MCwicGF0aCI6Ii83NjY3NDQyMi8zNDQ5MTEwMzItN2JjZmFhMzktYzlmZS00NzQwLWIzNzQtYmNlYzY3Y2FjMzMxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMjAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjIwVDE0NDQxMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWNkN2M2ZGEwMzg5YTdjNGI5MzQ2ZmQ1MmIxZTliOWY3OWZjMTQxODc3MzhiMmY0ODM3NjUyYTllNjllYWI2M2MmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.eWSKRjDJofy7BUHexUWOzOSqhn0xqLQcKB3JHQmm3LI)
AWS Network - Customer Network์ Site-to-Site VPN ์ฐ๊ฒฐ์ ๊ตฌ์ฑํด๋ณด๊ฒ ์ต๋๋ค. ๋ค์์ ์ํด์ ์ค์ Customer Network๊ฐ ํ์ํ์ง๋ง, ์ ํฌ๋ ๋์ฟ ๋ฆฌ์ ์ ์๋ EC2 ์ธ์คํด์ค๋ก Customer Network๋ฅผ ํ๋ด๋ด์ด ๊ตฌ์ฑํด๋ณด๊ฒ ์ต๋๋ค. ๊ธฐ๋ณธ์ ํ๊ฒฝ ๊ตฌ์ฑ์ ๊ฒฝ์ฐ ํ ๋ผํผ ์์ค ์ฝ๋๋ฅผ ๊ณต๊ฐํด ๋์์ผ๋ฏ๋ก ์ด๋ฅผ ํตํด ์์ฝ๊ฒ ๊ตฌ์ฑ ๊ฐ๋ฅํฉ๋๋ค.
Routing Table
AWS Network์ Routing Table์์ ์์ ์ CIDR ๋ฒ์์ธ 10.0.0.0/16์ ๊ฒฝ์ฐ Local์ ํฅํ๋๋ก ํ๊ณ , Customer Network์ CIDR ๋ฒ์์ธ 192.168.0.0/16์ Vritual Private Gateway๋ฅผ ํฅํ๋๋ก ์ค์ ํฉ๋๋ค.
Customer Network์ Routing Table์์ ์์ ์ CIDR ๋ฒ์์ธ 192.168.0.0/16์ ๊ฒฝ์ฐ Local์ ํฅํ๋๋ก ํ๊ณ , ๊ทธ ์ธ์ ๋ชจ๋ ๋ฒ์ 0.0.0.0/0์ ๋ํด์ Internet Gateway๋ฅผ ํฅํ๋๋ก ์ค์ ํฉ๋๋ค. Customer Network์ EC2-VPN์ ์จํ๋ ๋ฏธ์ค ํ๊ฒฝ์ ์๋ํฌ์ธํธ์ธ Customer Router๋ฅผ ๋ํ๋ ๋๋ค. ์ด๋ ์ธํฐ๋ท์ ๊ฑฐ์น๋๋ก ๋ผ์ฐํ ์ ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.
Security Group
EC2-A์์๋ 192.168.0.0/16์ ICMP ํ๋กํ ์ฝ์ ํ์ฉํ์ฌ, Ping ํ ์คํธ๋ฅผ ๊ฐ๋ฅํ๋๋ก ๊ตฌ์ฑํฉ๋๋ค.
ํ ๋ผํผ์ผ๋ก ๋ฆฌ์์ค ๊ตฌ์ฑํ๊ธฐ
๋ ํฌ์งํ ๋ฆฌ ์์ค ํ์ผ์ ์ด์ฉํ์ฌ ๊ฐ๋จํ ์ค์ต ํ๊ฒฝ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ๊ทธ ์ ์ aws configure
๋ช
๋ น์ด๋ก ๋ฆฌ์์ค๋ฅผ ์์ฑํ ํ๊ฒฝ์ ์ ์ํฉ๋๋ค. ํ๋กํ ์ค์ ๊ณผ ๊ด๋ จํ ๋ฐฉ๋ฒ์ ๋ํด์๋ ๋ค์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.
aws configure --profile s2s
profile
์ต์
์ ์ง์ ํ์ฌ s2s
ํ๋กํ์ ์์ธ์ค ํค ๊ฐ์ ์
๋ ฅํฉ๋๋ค. ํ๋กํ ์ง์ ํ ๋ค์๊ณผ ๊ฐ์ด ์คํํฉ๋๋ค:
terraform init
terraform apply
![s2s2](https://private-user-images.githubusercontent.com/76674422/344911125-80351163-fd3a-4f83-9023-2c3529a3e485.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NDAwNjI5NTAsIm5iZiI6MTc0MDA2MjY1MCwicGF0aCI6Ii83NjY3NDQyMi8zNDQ5MTExMjUtODAzNTExNjMtZmQzYS00ZjgzLTkwMjMtMmMzNTI5YTNlNDg1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMjAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjIwVDE0NDQxMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWUyMzg5ZTNkNGVmY2RkYTY4ZjM2ZGMzNTA5MmJkYmRhMDE3Y2FlOWRlY2IxNzkyMDU2YzA4Mzg0NGU2MTU0MjgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.8i9V2sVFg32VpuxNQ6-neoLXz0ink2odf7PSZusywAo)
์ ์์ ์ผ๋ก ์คํํ์๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ํ ์ ์์ต๋๋ค.
ํ ๋ผํผ์ผ๋ก ํ๊ฒฝ ๊ตฌ์ฑ์ ํ๊ณ ์ถ์ง ์๊ณ , ์ง์ ๋ฆฌ์์ค๋ฅผ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด ๊ทธ๋ ๊ฒ ํ์ ๋ ์ข์ต๋๋ค. ์๋จ ์ด๋ฏธ์ง๋ฅผ ํ ๋๋ก ๋ฆฌ์์ค๋ฅผ ์์ฑํ์๋ฉด ๋ฉ๋๋ค.
Site-to-Site VPN ์ฐ๊ฒฐ ๋ฆฌ์์ค๋ฅผ ์ ์ํ๋ ๋ธ๋ญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
# Site to Site VPN Connection
resource "aws_vpn_connection" "aws_vpn_connection" {
provider = aws.seoul
vpn_gateway_id = aws_vpn_gateway.aws_vpn_gateway.id
customer_gateway_id = aws_customer_gateway.aws_customer_gateway.id
type = "ipsec.1"
static_routes_only = true
local_ipv4_network_cidr = aws_vpc.customer_vpc.cidr_block
remote_ipv4_network_cidr = aws_vpc.aws_vpc.cidr_block
tags = {
Name = "${var.project_name}-${var.environment_aws}-vpn"
}
}
# VPN Connection Route
resource "aws_vpn_connection_route" "aws_vpn_connection_route" {
provider = aws.seoul
destination_cidr_block = aws_vpc.customer_vpc.cidr_block
vpn_connection_id = aws_vpn_connection.aws_vpn_connection.id
}
์ฌ๊ธฐ์ static_routes_only ๋ฅผ false๋ก ์ง์ ํ๋ฉด BGP๋ฅผ ์ด์ฉํ dynamic routing์ด ๊ฐ๋ฅํ๋๋ก ๊ตฌ์ฑํด์ผ ํฉ๋๋ค. ์ฆ, Customer Gateway์์ BGP๋ฅผ ์ง์ํด์ผ ํ๋ฏ๋ก, ํด๋น ์ค์ต์์ static_routes_only๋ฅผ true ๋ก ์ค์ ํ์ต๋๋ค.
local_ipv4_network_cidr
์ aws_vpc์ cidr๋ก ์คํดํ ์ ์์ต๋๋ค. ์ด์ ์ฃผ์ํด์ผ ํฉ๋๋ค.
Site to Site VPN ์ค์ ํ, AWS ์ฝ์์ ํตํด Customer VPC์ EC2์ ์ฌ์ฉํ VPN Configuration File์ ๋ค์ด๋ก๋ํฉ๋๋ค. ์ด ๋ Vendor๋ฅผ Openswan์ผ๋ก ์ ํํฉ๋๋ค. (Libreswan์ Openswan์ ํฌํฌ์ ๋๋ค)
![s2s3](https://private-user-images.githubusercontent.com/76674422/344911172-6610e996-7145-4bcd-ae31-b7560e199cee.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NDAwNjI5NTAsIm5iZiI6MTc0MDA2MjY1MCwicGF0aCI6Ii83NjY3NDQyMi8zNDQ5MTExNzItNjYxMGU5OTYtNzE0NS00YmNkLWFlMzEtYjc1NjBlMTk5Y2VlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMjAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjIwVDE0NDQxMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWU4NGY2OTU3MGIzNTRiZWQ1MmQwOWZmODM4MmU0NTE4Y2NkZDNhZjgzOWRlYTdmZTc5MGYwOGQ4YTVkYThhM2EmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.GaSDBdUp_abDBqMa7lTRX76aYG_MoAIHDg83NkFhcjo)
![s2s4](https://private-user-images.githubusercontent.com/76674422/344911185-b522447f-9c9c-4544-a402-7b97805c2b55.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NDAwNjI5NTAsIm5iZiI6MTc0MDA2MjY1MCwicGF0aCI6Ii83NjY3NDQyMi8zNDQ5MTExODUtYjUyMjQ0N2YtOWM5Yy00NTQ0LWE0MDItN2I5NzgwNWMyYjU1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMjAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjIwVDE0NDQxMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTY4ZTY2Njc0NTlhNGExN2ZlNTBhZGU4ZmI2MTQwZjkyODUwOTc0OWVjNjlkN2NlMGU0MGI5MGU2ODgzNGQyZTEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.gBeSAB_PCqTFyPRegtAC5iK3T2cx04zbKn40G6SoabI)
Configuration File ์์
์ด์ EC2์์ Libreswan์ ๊ตฌ์ฑํฉ์๋ค. AWS ๋งค๋์ง๋จผํธ ์ฝ์์์ Tokyo ๋ฆฌ์ ์ EC2(Customer EC2)๋ก Instance Connect๋ฅผ ํตํด ์ ์ํฉ๋๋ค.
![s2s5](https://private-user-images.githubusercontent.com/76674422/344911222-69a8bee7-87c7-4eb7-b1c7-bdf47325e6aa.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NDAwNjI5NTAsIm5iZiI6MTc0MDA2MjY1MCwicGF0aCI6Ii83NjY3NDQyMi8zNDQ5MTEyMjItNjlhOGJlZTctODdjNy00ZWI3LWIxYzctYmRmNDczMjVlNmFhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMjAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjIwVDE0NDQxMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTZmOGVlOGU3NWEwYWIxMzA4ZmUzNWVmZTc4YWY5NTBjOTFiM2VjODcxMWIwNjk2MGVkOTc4OGM5N2ZhODhlNjYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.Rw_NMtpTYMY1SPWXgBf7Qh2srvw4D3I6wPs27fncluk)
Amazon Linux 2023๋ถํฐ๋ Openswan์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํ์ง ์๊ธฐ ๋๋ฌธ์, ์ถ๊ฐ์ ์ธ ์ค์ ์ด ํ์ํฉ๋๋ค. ๋จผ์ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ์์ฑํ๊ณ Libreswan์ ์ค์นํด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ EC2์ ์ ์ํ๋ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ํตํด repo ํ์ผ์ ์์ฑํด์ค๋๋ค.
sudo vi /etc/yum.repos.d/fedora.repo
๊ทธ ํ ํ์ผ์์ ๋ค์์ ๋ด์ฉ์ ๋ถ์ฌ๋ฃ์ต๋๋ค:
[fedora]
name=Fedora 36 - $basearch
#baseurl=http://download.example/pub/fedora/linux/releases/36/Everything/$basearch/os/
metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-36&arch=$basearch
enabled=0
countme=1
metadata_expire=7d
repo_gpgcheck=0
type=rpm
gpgcheck=1
gpgkey=https://getfedora.org/static/fedora.gpg
skip_if_unavailable=False
๋ถ์ฌ๋ฃ์๋ค๋ฉด ์ ์ฅ ํ ๋์ต๋๋ค. (!wq
๋ช
๋ น์ด๋ ZZ
๋ฅผ ํตํด ์ ์ฅ ํ ์ข
๋ฃ๋ฅผ ํ ์ ์์ต๋๋ค)
์ ์ฅํ๋ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ํตํด Libreswan์ ์ค์นํฉ๋๋ค.
sudo dnf --enablerepo=fedora install libreswan -y
![s2s6](https://private-user-images.githubusercontent.com/76674422/344911270-95af6147-efd1-45bf-b0a5-748172d2b133.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NDAwNjI5NTAsIm5iZiI6MTc0MDA2MjY1MCwicGF0aCI6Ii83NjY3NDQyMi8zNDQ5MTEyNzAtOTVhZjYxNDctZWZkMS00NWJmLWIwYTUtNzQ4MTcyZDJiMTMzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMjAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjIwVDE0NDQxMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQ4NTVkMWE0NTNhYjZjOTU4YzhiYmM2ODkzZGQ5MGE0YzViN2VlZTRlODUyYzYwODVmOTgwZGFjZWNmOTUzYTYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.N5UCqjvyaa1vkp-8Z-Pqq8nlku5v1ung2bX7IjHmyCI)
์ค์น๊ฐ ์๋ฃ๋ ๋ชจ์ต
Libreswan์ ์ค์น๋ฅผ ๋ง์ณค๋ค๋ฉด, systemctl configuration file์ ์์ ํฉ๋๋ค.
sudo vi /etc/sysctl.conf
ํด๋น ํ์ผ ํ๋จ์ ๋ค์์ ๋ช ๋ น์ด๋ฅผ ์ถ๊ฐํ๊ณ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ์ฅํ๊ณ ๋์ต๋๋ค.
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.accept_source_route = 0
๊ทธ ํ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ ๋ณ๊ฒฝ์ฌํญ์ ๋ฐ์ํฉ๋๋ค.
sudo sysctl -p
๋ค์์ผ๋ก, /etc/ipsec.conf ํ์ผ์ ์ด์ด include /etc/ipsec.d/*.conf
์ํธ๋ฆฌ๊ฐ ์๋์ง ํ์ธํฉ๋๋ค.
sudo vi /etc/ipsec.conf
![s2s7](https://private-user-images.githubusercontent.com/76674422/344911383-87fc9508-777d-4be2-a15a-e435b822f092.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NDAwNjI5NTAsIm5iZiI6MTc0MDA2MjY1MCwicGF0aCI6Ii83NjY3NDQyMi8zNDQ5MTEzODMtODdmYzk1MDgtNzc3ZC00YmUyLWExNWEtZTQzNWI4MjJmMDkyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMjAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjIwVDE0NDQxMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWI0NmQ3MTk1ZThlNTkxNWQ2MjgyYjQxZGY2ZTAzZjhkMDQzMmI5MDRhNGE4MWNkNmQ5ZDcxNGFkZGFlMTUwODAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.4yjgCylBbtXR8FIwD-jayicWhxX5CqXw8x6xv5imRjA)
๋ง์ง๋ง์ค์ ์ ๋๋ก ์ค์ ๋์ด ์๋ ๊ฒ์ ํ์ธํ์์ผ๋ฏ๋ก ์ถ๊ฐ์ ์์ ์ด ํ์ํ์ง ์์ต๋๋ค. ๋ง์ฝ #๋ก ์ฃผ์ ์ฒ๋ฆฌ๋์ด ์๋ค๋ฉด ์ฃผ์์ ํด์ ํฉ๋๋ค.
์ด์ ๋ฏธ๋ฆฌ ๋ค์ด๋ฐ์๋ VPN Configuration File์ ์คํ ์ ๋ฐ๋ผ๊ฐ๋๋ค. 4๋ฒ๋ถํฐ ๋ณด๊ฒ ์ต๋๋ค.
- Create a new file at /etc/ipsec.d/aws.conf if doesn't already exist:
sudo vi /etc/ipsec.d/aws.conf
๋ค์๊ณผ ๊ฐ์ ๋ด์ฉ์ ๋ถ์ฌ๋ฃ์ต๋๋ค. (๋ณธ์ธ์ configuration file ์์ ๋ด์ฉ์ ์ง์ด๋ฃ์ต๋๋ค)
conn Tunnel1
authby=secret
auto=start
left=%defaultroute
leftid=18.176.25.8
right=3.37.114.133
type=tunnel
ikelifetime=8h
keylife=1h
phase2alg=aes128-sha1;modp1024
ike=aes128-sha1;modp1024
auth=esp
keyingtries=%forever
keyexchange=ike
leftsubnet=<LOCAL NETWORK>
rightsubnet=<REMOTE NETWORK>
dpddelay=10
dpdtimeout=30
dpdaction=restart_by_peer
๋ช๊ฐ์ง ๋ฐ๊ฟ์ผ ํ ์ ์ด ์์ต๋๋ค.
auth=esp
๋ผ์ธ์ ์ญ์ ํฉ๋๋ค. ์ด๊ฑด Libreswan์์ ์ง์ํ์ง ์์ต๋๋ค.phase2alg
์aes_gcm
๊ฐ์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค.ike
์aes256-sha1
๊ฐ์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค.LOCAL NETWORK
๋ Customer Network์ CIDR ๊ฐ์ ์ ๋ ฅํฉ๋๋ค. (192.168.0.0/16)REMOTE NETWORK
๋ AWS Network์ CIDR ๊ฐ์ ์ ๋ ฅํฉ๋๋ค. (10.0.0.0/16)
conn Tunnel1
authby=secret
auto=start
left=%defaultroute
leftid=18.176.25.8
right=3.37.114.133
type=tunnel
ikelifetime=8h
keylife=1h
phase2alg=aes_gcm
ike=aes256-sha1
keyingtries=%forever
keyexchange=ike
leftsubnet=192.168.0.0/16
rightsubnet=10.0.0.0/16
dpddelay=10
dpdtimeout=30
dpdaction=restart_by_peer
๋ชจ๋ ๋ณ๊ฒฝํ์๋ค๋ฉด ์ ์ฅ ํ ๋์ต๋๋ค.
- Create a new file at /etc/ipsec.d/aws.secrets if it doesn't already exist:
sudo vi /etc/ipsec.d/aws.secrets
ํ์ผ ์์ ์ํธ๋ฆฌ๋ฅผ ์ง์ด๋ฃ์ต๋๋ค. (๋ณธ์ธ์ configuration file ์์ ๋ด์ฉ์ ์ง์ด๋ฃ์ต๋๋ค)
18.176.25.8 3.37.114.133: PSK "Ns2Of1Wv24955RX7jjFyhzpsXfN4MsKw"
์ฌ๊ธฐ๊น์ง ๋ง์ณค๋ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ํตํด ipsec ์๋น์ค๋ฅผ ์์ํฉ๋๋ค!
sudo systemctl start ipsec.service
๋ค์ ๋ช ๋ น์ด๋ฅผ ํตํด status๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
sudo systemctl status ipsec.service
![s2s8](https://private-user-images.githubusercontent.com/76674422/344911441-a8f19e33-f09c-4062-b894-2d8925adb4bf.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NDAwNjI5NTAsIm5iZiI6MTc0MDA2MjY1MCwicGF0aCI6Ii83NjY3NDQyMi8zNDQ5MTE0NDEtYThmMTllMzMtZjA5Yy00MDYyLWI4OTQtMmQ4OTI1YWRiNGJmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMjAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjIwVDE0NDQxMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQ4OGQzMzFkZWY1NmM2ZWIxYWViY2FjZDk5NmRhNjNiYzAxOGQxZTc3NTUzMGVlYzRjZmJiODVhNzVkMWMwMzImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.b49aihnZ739olKey54qPrXDnT-g3TZUP__R3SGxPfLQ)
ํฐ๋์ด ์์ฑ๋๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๋ก๊ทธ๊ฐ ์ถ๋ ฅ๋๋ค๋ฉด ipsec ํฐ๋์ด ์ ์์ ์ผ๋ก ์ฐ๊ฒฐ๋์์์ ๋ํ๋ ๋๋ค.
![s2s9](https://private-user-images.githubusercontent.com/76674422/344911464-df9c5e9c-2581-4c2b-85b8-31bc0c1f29d0.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NDAwNjI5NTAsIm5iZiI6MTc0MDA2MjY1MCwicGF0aCI6Ii83NjY3NDQyMi8zNDQ5MTE0NjQtZGY5YzVlOWMtMjU4MS00YzJiLTg1YjgtMzFiYzBjMWYyOWQwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMjAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjIwVDE0NDQxMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTZjN2M3MmEyMGQ4ZGU3ZmY1MGQ3YjdkYzg1NDBkNzkxMTdjZTc0MWJkMjRhZDcyMTc4ZGFjNWVhZjM1NWRlY2YmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.m79_cuPCPXrCfoitfKbTNLt2LQ5XF6sE1_gTmQOVvGI)
AWS ๋งค๋์ง๋จผํธ ์ฝ์์์๋ ํฐ๋์ด UP์ธ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก Tokyo ๋ฆฌ์ ์ Customer Network ์์ ์๋ EC2์์ AWS Network์ private ip๋ก ์ ์์ด ๊ฐ๋ฅํ์ง ํ์ธํฉ๋๋ค.
ping <private-ip>
![s2s10](https://private-user-images.githubusercontent.com/76674422/344911521-936b9207-da54-4402-87b5-b8e2c5f407ca.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NDAwNjI5NTAsIm5iZiI6MTc0MDA2MjY1MCwicGF0aCI6Ii83NjY3NDQyMi8zNDQ5MTE1MjEtOTM2YjkyMDctZGE1NC00NDAyLTg3YjUtYjhlMmM1ZjQwN2NhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMjAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjIwVDE0NDQxMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTdmOWQ4MTRiMjc2ZmQ3NjE4MWYxZjU2YTIwZmYwZmIyN2QzM2JkZTk0ZjI1NGJjZWU4MGExMDI5NTZkZTdmMGUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.lHEpLLJ1ksW7EQOJE3kQFcMIYMqofT7AKUeQ37s9RgY)
ํธ๋ฌ๋ธ์ํ
ํฐ๋์ด UP ์ํ๋ก ๋ฐ๋์ง ์๋ ๊ฒฝ์ฐ, sudo systemctl status ipsec.service
๋ฅผ ํตํด ๋ก๊ทธ๋ฅผ ํ์ธํฉ๋๋ค.
-
IKE_AUTH response rejected Child SA with TS_UNACCEPTABLE, no connection named "Tunnel1โ
- ์ด ๊ฒฝ์ฐ aws.conf ํ์ผ์ ์
๋ ฅํ ์๊ณ ๋ฆฌ์ฆ ์ ํ์ ๋ฌธ์ ๊ฐ ์์ ํ๋ฅ ์ด ๋์ต๋๋ค. ์ฌ๋ฐ๋ฅธ ์๊ณ ๋ฆฌ์ฆ ์กฐํฉ์ ์ฌ์ฉํ์๋์ง ๊ฒํ ํ๊ณ
sudo systemctl restart ipsec.service
๋ช ๋ น์ด๋ฅผ ํตํด ๋ค์ ์คํํด๋ณด์ธ์. journalctl -xe | grep pluto
๋ช ๋ น์ด๋ฅผ ํตํด ๋ ์์ธํ ๋ก๊ทธ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
- ์ ์ ๊ฒฝ์ฐ์๋ ํด๋น ๋ช ๋ น์ด๋ฅผ ํตํด โmodp1024โ๋ฅผ ์ง์ํ์ง ์๋ ๊ฒ์ ํ์ ํ์ต๋๋ค.
- ์ด ๊ฒฝ์ฐ aws.conf ํ์ผ์ ์
๋ ฅํ ์๊ณ ๋ฆฌ์ฆ ์ ํ์ ๋ฌธ์ ๊ฐ ์์ ํ๋ฅ ์ด ๋์ต๋๋ค. ์ฌ๋ฐ๋ฅธ ์๊ณ ๋ฆฌ์ฆ ์กฐํฉ์ ์ฌ์ฉํ์๋์ง ๊ฒํ ํ๊ณ
-
(๋ฆฌ์์ค๋ฅผ ์ง์ ๊ตฌ์ฑํ์ ๊ฒฝ์ฐ) ํฐ๋์ด UP์ด์ง๋ง Ping์ด ์คํจํ๋ ๊ฒฝ์ฐ
- AWS Network์ EC2์ ํ ๋น๋์ด ์๋ Security Group์ด Customer Network VPC์ CIDR์ ๋ํด ICMP IPv4 All traffic๋ฅผ ํ์ฉํ๋์ง ํ์ธํฉ๋๋ค.
- AWS Network์ Routing Table์ ํ์ธํฉ๋๋ค. Customer Network VPC์ CIDR ๋ฒ์๋ Virtual Private Gateway๋ฅผ ํฅํ๋๋ก ์ค์ ๋์ด ์์ด์ผ ํฉ๋๋ค.
- Customer Network์ Routing Table์ ํ์ธํฉ๋๋ค. 0.0.0.0/0 ๋ฒ์์ ๋ํด Internet Gateway๋ฅผ ํฅํ๋๋ก ์ค์ ๋์ด ์์ด์ผ ํฉ๋๋ค.
- VPC Flow log๋ฅผ ํ์ฑํ ํ์ฌ ๋์ฑ ์์ธํ ํธ๋ฌ๋ธ ์ํ ์ด ๊ฐ๋ฅํฉ๋๋ค.
AWS Site to Site VPN - Libreswan ์ฐ๊ฒฐ ์ค์ต์ ์๋ฃํ์ต๋๋ค. ์ค์ต์ ์๋ฃํ์ จ๋ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ํตํด ๋ฆฌ์์ค๋ฅผ ์ญ์ ํฉ๋๋ค:
terraform destroy