0부터 시작하는 OpenStack 공부 - 외부 Network 구현 및 연결

Jaehong Lee·2022년 9월 15일
0
post-thumbnail

1. Vswitch 구현 & 외부 Network 생성

구성할 환경

  • 위와 같이 OVS 기반의 Vswitch 를 통해 인스턴스가 외부와 통신이 가능한 환경을 구성해보자
  • Overlay Network 를 구성하기 위해서 Vswitch 가 필요하다

Vswitch 구현

[root@localhost ~(logged)]# cd /etc/sysconfig/network-scripts
[root@localhost network-scripts(logged)]# cp ifcfg-eth0 ifcfg-br-ex
  • network-scripts 디렉토리로 가서 eth 0 인터페이스 설정 파일을 복사하여 ifcfg-br-ex 를 생성해주자. 이름은 반드시 같아야 한다
TYPE=OVSBridge
BOOTPROTO=none
NAME=br-ex
DEVICE=br-ex
DEVICETYPE=ovs
ONBOOT=yes
IPADDR=211.183.3.111
PREFIX=24
GATEWAY=211.183.3.2
DNS1=8.8.8.8
NM_CONTROLLED=no
  • 위와 같이 ifcfg-br-ex 의 내용을 수정해주자. 이름과 Device 가 br-ex 이며, 타입은 OVSBridge 이다. Ip 는 그대로 사용한다. Vswitch 를 생성하였다
TYPE=OVSPort
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
DEVICETYPE=ovs
OVS_BRIDGE=br-ex
ONBOOT=yes
NM_CONTROLLED=no
  • eth 0 는 OVS switch 에 있는 Port 가 되야되므로 위와 같이 설정한다. Ip 는 없애야 한다. 이제 eth 0 는 OVS switch 에 포함된 Port 가 되었다. Vswitch 에 eth 0 를 Port 로 넣어주었다
  • 물리적으로 외부 요청은 eth 0 를 통해 들어온다. eth 0 는 원래 virtual switch 에 속하며, Ip 를 가지고 있어서 해당 Ip 로의 접근은 eth 0 을 통해 virtual switch 에 들어가게 하였다. 우리는 br-ex 라는 가상 스위치에 외부 요청이 오게 해야 하므로, 이 eth 0 를 가상 스위치의 Port 로 집어 넣었다. 이는 스위치의 Port 가 되므로 Ip 는 제거하였고, Ip 는 가상 스위치 자체에 넣었다

Network 생성

openstack network create --provider-physical-network extnet --provider-network-type flat --external extnet
  • external 은 외부 연결을 위한 옵션이다
  • provider-physical-network 는 Isp 에서 부터 내부 라우터까지의 Network 를 지정하는 것이다. 즉, 외부 - 가상 스위치 - 라우터 에 해당하는 네트워크 이다
  • provider-network-type flat 은 Isp 에서부터 eth 0 이 연결되는 구간에 대한 옵션으로 flat 으로 설정했으므로 연결 구조를 flat 하게 설정하였다

Subnet 생성

openstack subnet create extsubnet --network extnet --subnet-range 211.183.3.0/24 --allocation-pool start=211.183.3.201,end=211.183.3.239 --no-dhcp --dns-nameserver 8.8.8.8 --gateway 211.183.3.2
  • 정적 NAT 를 해줘야 하므로 DHCP 는 꺼줘야 한다
  • allocation-pool 은 floating Ip 의 pool 이다
  • gateway 는 Isp 쪽을 지정해야 하므로 .2 이다
openstack network set --external ext_net
  • 안해줘도 되지만, 혹시 모르니 ext_net network 는 외부로 나가는 network 라고 set 해주자

2. Network 연결 & Floating IP 발행

연결하기

  • 확인해보면 지구 모양이 붙어있으며, network 가 가장 왼쪽에 위치한다

  • 라우터에서 게이트웨이 설정에 들어가자

  • 외부 네트워크를 선택해주자. SNAT 는 정적 NAT 를 의미한다

  • 내부 네트워크와 외부 네트워크가 연결되었다!!

  • 라우터에서 게이트 웨이 설정을 하게 되면, 외부 네트워크이 floating Ip 를 가져와서 라우터에 할당해준다
  • 즉, 내부에서 외부로 나갈때, 해당 네트워크의 라우터에 접근하면, 할당된 floating Ip 로 정적 NAT 가 되어 나간다

Floating Ip 발행 - DashBoard

  • 프로젝트에 IP 할당을 누르자

  • Pool 을 지정하고 IP 할당을 누르자

  • 연결을 누르자

  • 연결할 인스턴스 를 선택하고 연결을 눌러주자
  • 해제할 때는 연결해제 - 유동 IP 해제 를 통해 인스턴스와 Floating IP 의 연결을 해제하고, IP 를 다시 Pool 에 담는다
  • 라우터를 외부 Network 에 연결했을 때, 라우터에 Floating IP 가 할당되었다. 이번에는 배포된 Instance 에 직접 Floating IP 를 할당했으므로, 해당 IP 로 접근시, 우리는 가상 스위치를 사용하기에 외부 - 가상 스위치 - 라우터 까지가 같은 Network 에 속하므로 eth 0 를 거쳐서 가상 스위치를 거쳐서 라우터 까지 요청이 도달한다. 이때, 정적 NAT 를 통해 Instance 에 Floating IP 를 할당했으므로, 라우터에서는 해당 IP 와 연결된 Instance 의 IP 로 도착지 주소를 변환하여 요청을 보내준다

확인하기

  • 외부와 통신이 잘된다. Floating IP 는 다시 발급 받았다. IP 주소가 다른것은 신경쓰지 말자. 인스턴스에 Floating IP 를 할당하였고, 인스턴스에 모든 주소에 대해 ICMP 프로토콜로 들어오는 것을 보안 그룹에서 허용하였으며, Vswitch 를 통해 라우터가 외부 네트워크와 같은 네트워크에 있기에 통신이 가능하다
  • .217 로 접근 하면, 라우터에서 NAT 되서 인스턴스로 들어간다

  • 외부에서 라우터에도 잘 통신된다

혹시 안된다면 network manager 를 restart 해주자


3. 외부에서 접속하기

Private Key 확인

cat ~/.ssh/gildong.pem
  • Private Key 내용을 복사하자

  • 윈도우에 복사한 내용을 가지고 pem 파일을 만들자

  • puttygen 에 들어가서 해당 파일을 이용해 ppk 파일을 만들자

Putty 로 접속

  • Key 파일 선택

  • 인스턴스에 할당된 Floating IP 주소를 입력하고, 접속하자. 계정 이름은 centos 이다

  • 잘 접속되었다
profile
멋진 엔지니어가 될 때까지

0개의 댓글