하이브리드 환경
· VPC1에는 Route53을 생성하고, VPC2에는 DNS서버를 생성한다.
· Route53에 레코드는 프라이빗 호스팅 영역으로 생성할 것이기 때문에 외부에 노출되지 않는다. 그렇게 때문에 VPC간 연결하기 위해선 VPC피어링 기술을 사용할 것이다. --> ping 사설ip가 될것임.
· ping websrv1.awsneta.internal(or dnssrv.idcneta.internal)은 안될것이기 때문에 인바운드, 아웃바운드 앤드포인트를 생성한다(VPC내의 서브넷은 가용영역이 서로 달라야한다)
· VPC DNS 옵션인 DNS hostnames과 DNS resolution를 반드시 활성화 설정 해야함
· VPC1에는 웹서버(인스턴스) 2개 만들어주고, VPC2에는 DNS서버 1개와 웹서버 1개 만들어 준다.
- 인바운드 엔드포인트: 네트워크의 DNS 해석기가 이 엔드포인트를 통해 DNS 쿼리를 Route 53 Resolver에 전달할 수 있다. 이렇게 하면 DNS 해석기가 Route 53 프라이빗 호스팅 영역의 EC2 인스턴스 또는 레코드와 같은 AWS 리소스의 도메인 이름을 쉽게 해석할 수 있다.
- 아웃바운드 엔드포인트: 확인자가 이 엔드포인트를 통해 쿼리를 네트워크의 해석기에 조건부로 전달한다. 선택한 쿼리를 전달하려면 전달할 DNS 쿼리의 도메인 이름(예: example.com) 및 쿼리를 전달할 네트워크에 있는 DNS 해석기의 IP 주소를 지정하는 확인자 규칙을 생성한다. 쿼리가 여러 규칙(example.com, acme.example.com)과 일치하는 경우 확인자는 가장 확실히 일치하는 규칙(acme.example.com)을 선택하고 해당 규칙에 지정한 IP 주소에 쿼리를 전달한다.
IDC-VPC2
(10.80.1.200)
vi /etc/named.conf
options {
directory "/var/cache/bind";
recursion yes;
allow-query { any; };
forwarders {
8.8.8.8;
};
forward only;
auth-nxdomain no;
};
zone "awsneta.internal" {
type forward;
forward only;
forwarders { 10.70.1.250; 10.70.2.250; }; # 인바운드 엔드포인트 포워더 주소
};
vi /etc/named.rfc1912.zones
zone "idcneta.internal" {
type master;
file "/var/named/db.idcneta.internal";
};
vi /var/named/db.idcneta.internal
$TTL 1D
@ IN SOA idcneta.internal. root.idcneta.internal. (
2019122701 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
; dns server
@ IN NS ns1.idcneta.internal.
; ip address of dns server
ns1 IN A 10.80.1.200
;Hosts
websrv IN A 10.80.1.100
dnssrv IN A 10.80.1.200
AWS-VPC1
(10.70.0.0/16)
외부에 도메인 정보가 알려지지 않도록 Route53에서 프라이빗 호스팅 영역 생성하고 나면
같은 VPC 내부에서는 연결되지만 다른 VPC와는 안됨
[root@ip-10-70-1-100 ~]# ping websrv2.awsneta.internal
PING websrv2.awsneta.internal (10.70.2.100) 56(84) bytes of data.
64 bytes from ip-10-70-2-100.ap-northeast-2.compute.internal (10.70.2.100): icmp_seq=1 ttl=255 time=1.18 ms
64 bytes from ip-10-70-2-100.ap-northeast-2.compute.internal (10.70.2.100): icmp_seq=2 ttl=255 time=1.15 ms
64 bytes from ip-10-70-2-100.ap-northeast-2.compute.internal (10.70.2.100): icmp_seq=3 ttl=255 time=1.15 ms
64 bytes from ip-10-70-2-100.ap-northeast-2.compute.internal (10.70.2.100): icmp_seq=4 ttl=255 time=1.16 ms
VPC > 피어링 연결
요청자 VPC1(10.70.0.0/16)
수락자 VPC2(10.80.0.0/16)
으로 생성하고 연결 수락하면 쉽게 피어링 연결이 된다.
VPC 피어링 연결
프라이빗 IPv4 주소 또는 IPv6 주소를 사용하여 두 VPC 간에 트래픽을 라우팅할 수 있도록 하기 위한 두 VPC 사이의 네트워킹 연결입니다. 동일한 네트워크에 속하는 경우와 같이 VPC의 인스턴스가 서로 통신할 수 있습니다. 사용자의 자체 VPC 또는 다른 AWS 계정의 VPC와 VPC 피어링 연결을 만들 수 있습니다. VPC는 다른 리전에 있을 수 있습니다.
VPC끼리의 연결이 쓸데없이 인터넷을 돌아서 트래픽이 가는것이 아니라 VPC피어링연결을 통해서 트래픽이 간다.(보안 향상)
VPC > 라우팅 테이블
VPC1 라우팅 테이블에 가서 10.80.0.0/16넣고, Peering Connection 선택해서 위에서 생성한 피어링을 넣으면
VPC1 인스턴스에서 ping VPC2 인스턴스 사설ip 가 된다!
VPC2 에서도 똑같이 라우팅 테이블 가서 10.70.0.0/16 넣고, Peering Connection 선택해서 위에서 생성한 피어링을 넣으면
반대쪽에서도 된다.
VPC2의 DNS서버의 도메인들을 지정해 주기 위해 DHCP 옵션 세트를 생성 변경해야 한다.
(VPC1은 Route53을 사용하기 때문에 자동으로 지정이됨)
DHCP 옵션 세트
VPC내에 도메인 네임과 도메인 네임 서버의 정보를 제공한다.
사용자가 원하는 도메인 네임과 도메인 네임 서버의 정보를 지정한 DHCP 옵션 세트를 생성하여 VPC에 적용 가능하다.
VPC > DHCP 옵션 세트
도메인 이름: idcenta.internal
도메인 이름 서버 : 10.80.1.200, 8.8.8.8
NTP서버: 203.248.240.140, 168.126.3.6
으로 생성하고 VPC2에서 작업 -> DHCP 옵션 세트 변경 에서 변경해준다.
--> VPC2의 프라이빗 네임서버가 xxxxx.idcenta.internal 으로 바껴야함
IDC-VPC2
vi /etc/resolv.conf
nameserver 10.80.1.200
nameserver 8.8.8.8
search idcenta.internal
내용 변경 해준다.
아직 도메인 이름으로 핑이 가지 않기 때문에 인바운드 아웃바운드 엔드포인트 설정해줘야한다.
[root@aws-web1 ~]# ping websrv.idcenta.internal
ping: websrv1.awsneta.internal: Name or service not known
인바운드 엔드포인트
인바운드와 아웃바운드 모두 VPC1에 생성
보안그룹은 53번이 포함되어 있는 것으로 넣어주면됨
10.70.1.0/24 중에서 안쓰는 IP면 모두 가능하지만 편의상 250으로 맞췄음
서브넷2도 250으로 설정
서브넷 가용영역이 서로 달라야한다
VPC2에서 VPC1으로 ping 도메인 성공!
반대쪽에서도 하려면 아웃바운드 엔드포인트 설정해야함
아웃바운드 엔드포인트
위에 처럼 VPC1쪽에 안쓰는 IP 251으로 맞춰서 2개 똑같이 만들어줌
아웃바운드는 규칙도 설정해줘야함
규칙생성
idcenta.internal
10.80.1.200
보안그룹 53번 포함
[ec2-user@aws-web1 ~]$ ping websrv.idcenta.internal
PING websrv.idcenta.internal (10.80.1.100) 56(84) bytes of data.
64 bytes from ip-10-80-1-100.ap-northeast-2.compute.internal (10.80.1.100): icmp_seq=1 ttl=255 time=0.982 ms
64 bytes from ip-10-80-1-100.ap-northeast-2.compute.internal (10.80.1.100): icmp_seq=2 ttl=255 time=0.398 ms
^C
--- websrv.idcenta.internal ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.398/0.690/0.982/0.292 ms
아웃바운드 핑테스트도 성공!!
'Cloud > AWS' 카테고리의 다른 글
[AWS] 고가용성 환경 생성 (0) | 2021.05.18 |
---|---|
aws cli, ansible 사용하여 자동화 - nfs 서버 만들기 (0) | 2021.05.06 |
[AWS] 실습 AWS와 온프레미스간 VPN 통신 (0) | 2021.05.05 |
[ubuntu] AWS CLI 설치 및 EC2 생성 ssh접속 (0) | 2021.05.05 |
[AWS] 외부 무료 도메인 Route53 등록 방법, 장애 조치 라우팅 설정 방법 (2) | 2021.05.03 |