본문 바로가기
Development(Web, Server, Cloud)/22) LINUX - Cloud

클라우드 34일차(네트워크 부분 다시 봐야함)

by tonyhan18 2022. 2. 18.
728x90

???

 

가상머신을 이루는 요소

1. XML -> KVM1, KVM2가 가져가게 된다

2. DISK -> STORAGE에 저장

 

KVM

 

???

 

스토리지 클러스터링

클러스터를 2개를 만들고 DB를 동기화한 상태에서 한쪽 클러스터는 Active로 다른쪽은 Standby로 나두고 한쪽이 죽으면 Standby를 Active로 돌린다.

 

ex) 갈레라 클러스터

-> DB 클러스터링

 

KVM1과 KVM2의 데이터는 모두 STORAGE에 저장된다.

 

 

STORAGE내에 shared 디렉토리를 만들자.

 

그리고 KVM1, KVM2 각각에는 cloud 디렉토리를 만들어서 마운트해서 사용하게끔하자

 

먼저 스토리지를 켜서 

오른쪽의 'I will configure partitioning'을 누른다음 Done을 눌러서 공간을 분할하자

 

sharec : 120GB

swap : 4GB

boot : 1GB

 

다 만든다음에는 KVM kimchi를 이용해서 관리를 해보자.

https://www.bitbull.ch/notes/post/install-kimchi-and-ginger-on-centos7-kvm-host/

 

Bitbull Tech Notes - Install Kimchi and Ginger on CentOS7 KVM host

This is a nice web-ui for single kvm virt-hosts I tried a lot of UIs, but this is so far the best opensource kvm web-ui, which is using libvirt for management. Why is libvirt important? It keeps your host open to integrate/migrate from/to other virt soluti

www.bitbull.ch

 

먼저 Super Putty로 putty를 열어보자

 

이제부터는 domain 이름을 가지고 통신할 수 있게끔 하자

 

먼저 위와같이 domain이름을 /etc/hosts 파일 안에 ip와 매칭해서 적어놓자

 

이제 snapshot을 찍자

 

KVM1을 먼저 snapshot하자

이런 이름으로 나머지 VM 모두 이름을 적어주자

 

--- 스냅샷 ---

인터페이스 이름 변경하기

ens32 -> eth0

ens33 -> eth1

ens34 -> eth2

 

```

vi /etc/default/grub

```

GRUB_CMDLINE_LINUX 뒤에 net.ifnames=0 biosdevname=0을 추가해 주어서 NIC이름을 손쉽게 변경할 수 있게끔 만들자.

 

```

cd /etc/sysconfig/network-scripts/

```

 

그럼 ens32, ens33, ens34의 이름을 바꿀 수 있게 된다.

ens32 -> eth0

ens33 -> eth1

ens34 -> eth2

그리고 파일 내부로 들어가서 필요없는것은 지우고 내용은 수정해주자

대충 위와같은 느낌으로 전체를 수정해주면 된다.

 

설정된 내용 부팅 파일에 반영한 뒤 재실행

```

grub2-mkconfig -o /boot/grub2/grub.cfg

reboot

```

 

네트워크

vlan + static route + ospf + GRE tunnel + NAT

(cloud + virtualization)

본사와 지사가 통신이 가능한 환경

 

???

 

 

대충 이상태에서 시작하자

 

HQ_SW에 슬롯을 하나더 만들어주자

 

보면 FE도 번호따라서 IP가 들어갈지 유무가 달라진다.

0으로 시작하는 것은 Router Port, L3 포트이기 때문에 IP가 들어간다.

 

암튼 위와같이 만들어주자

 

스위치를 설정해주자

1. vlan 만들기

```

vlan dat

vlan 10 name WEBSERV

vlan 20 name PC

exit

show vlan-sw brief

```

```

conf t

int fa1/1

sw mode access

sw access vlan 10

int fa1/2

sw mode access

sw access vlan 20

int fa1/10

sw mode trunk

```

 

2. HQ_R 을 설정하자

```

conf t

int fa0/1

no sh

int fa0/1.10

encap dot1q 10

ip add 192.168.1.1 255.255.255.0

int fa0/1.20

encap dot1q 20

ip add 192.168.2.1 255.255.255.0

```

 

vlan 10, vlan 20 과 통신이 되는 trunk를 만들어야 한다.

 

3. WEBSERVER

```

conf t

int fa0/0

ip add 192.168.1.100

no sh

ip route 0.0.0.0 0.0.0.0 192.168.1.1

```

 

4. HQ_PC

```

conf t

int fa0/0

ip add 192.168.2.100

ip route 0.0.0.0 0.0.0.0 192.168.2.1

```

 

5. BR_R

```

conf t

int fa0/1

ip add 192.168.100.1 255.255.255.0

no sh

```

 

6. BR_PC

```

int fa0/0

ip add 192.168.100.100 255.255.255.0

no sh

ip route 0.0.0.0 0.0.0.0 192.168.100.1

do ping 192.168.100.1

```

 

step 1. 각 인터페이스에 IP 입력

step 2. 본사/지사 라우터는 인터넷과의 연결을 위해 default route 입력하기

step 3. 본사에서 ping 5.5.5.2

 

나머지 부분도 처리해주자

 

인터넷

```

int lo 0  #가상 인터페이스 0

ip add 8.8.8.8 255.255.255.0

ip add 8.8.4.4 255.255.255.0 secondary

```

루프백은 가상의 주소를 하나더 넣을 수 있다는 장점이 있다.

 

 

HQ_R

```

do ping 8.8.8.8

```

지사는 현재 BR_R의 fa0/0에 있는 5.5.5.2가 사용할 수 있는 유일한 공인 IP 주소이다.

그래서 PAT 방식으로 네트워크를 입력해주어야한다. 그리고 이것도 동적으로 처리해주어야 한다. 왜냐하면 서버가 아니니까

 

```

access-list 1 permit any

ip nat inside so list 1 int fa0/0 overload

int fa0/0

ip nat inside

int fa0/1

ip nat outside

```

 

반대로 본사는 고정된 주소를 쓰는 NAT를 구성할것이다. 서버에 정적 NAT를 구성해보자

그래서 내부적으로 111.111.111.0/24 를 쓰기로 했다고 하자 이건 공인IP이다.

 

이걸 위해서 INT에 HQ_R이 이걸 쓴다고 넣어주어야 한다.

```

ip route 111.111.111.0 255.255.255.0 1.1.1.2

```

 

이상태에서 공인 IP를 사설 IP에 매칭해주자

111.111.111.100 = 192.168.1.100

111.111.111.200 = 192.168.2.100

```

ip nat pool WEBSERV 111.111.111.100 111.111.111.100 prefix 24

ip nat inside source static 192.168.1.100 111.111.111.100

int fa0/1

int fa0/1.10

ip nat inside

int fa0/1.20

ip nat inside

```

 

INT

```

debug ip icmp

```

 

WEBSERV

```

ping 8.8.8.8

```

 

마지막으로 HQ_PC도 NAT를 이용하되 111.111.111.111만 이용하게끔 만들자

HQ_R

```

ip nat pool PCZONE 111.111.111.111 111.111.111.111 prefix 24

access-list 2 permit 192.168.2.0 0.0.0.255

ip nat inside so list 2 pool PCZONE overload

```

 

이제 HQ 와 BR사이에 인터넷을 그냥 사설 IP로 내보낼 수 없으니 GRE Tunnel을 만들어 처리해버리자

본사와 지사 내부간 통신을 위해서는 아래의 선결 조건이 필요함

192.168.1.0/24

====== 192.168.100.0/24

192.168.2.0/24

 

본사 내부에 있는 또는 지사 내부에 있는 사설 주소는 각각 반대편 내부로의 통신을 할 때에는 NAT를 하지 않고 터널로 들어가야 사설 주소가 통신이 가능하다.

 

최종 결과

192.168.2.0/24 =============== 192.168.100.0/24

간 통신에서는 NAT없이 사설 주소로만 통신이 가능해야 한다.

 

GRE 터널 만들기

이제 만드는 것은

```

ping 192.168.100.100

```

하면 BR 네트워크로 핑이 가야한다. 이를 위해서는 터널 인터페이스가 있어야한다

 

HQ_R

```

int tunnel 0

ip add 172.6.1.1 255.255.255.0

tunnel source fa0/0

tunnel destination 5.5.5.2

tunnel mode gre ip

```

 

BR_R

```

int tunnel 0

ip add 172.6.1.1 255.255.255.0

tunnel source fa0/0

tunnel destination 1.1.1.2

tunnel mode gre ip

do ping 172.16.1.1

```

하면 다른쪽 라우터와 통신이 된다.

 

HQ_R

```

router ospf 1

network 192.168.2.1 0.0.0.0 area 0

network 172.16.1.1 0.0.0.0 area 0

do show ip route ospf  # 지사 ip 정보가 보임

```

 

BR_R

```

router ospf 1

network 192.168.100.1 0.0.0.0 area 0

network 172.16.1.2 0.0.0.0 area 0

do show ip route ospf  # 본사 ip 정보가 보인

```

 

그럼 터널이 뚤리었으니

HQ_PC

```

ping 192.168.100.100

```

이게 된다.

 

BR_PC

```

ping 192.168.2.100  #이건 된다

ping 192.168.1.100  #이건 안된다

```

 

 

HSRP

Hot Standby Router Protocol

네트워크 게이트웨이 이중화

 

 

구성은 위와같고 Cloud는 모두 이더넷을 넣어놓자

 

중견 이상은 두 개이상의 ISP와 통신한다. 그러지 않으면 하나가 끊겼을때 다른쪽을 써야하기 때문이다.

 

근데 그러면 도대체 PC는 어디를 DG로 써야할까? 이게 문제가 되는 부분이 모른다는 것이다. 한쪽이 고장나면 PC 전체 게이트웨이를 바꾸어야하니까.

 

그래서 사용하는 것이 HSRP와 같은 FHRP를 써야한다. FHRP(First hop Redundancy Protocol)

첫번째 홉을 여러개로 하겠다는 것이다. HSRP는 Cisco에서 만들었는데 사실상 표준이다.

 

방법은 vRouter을 중앙에 만든다. 그리고 찐 라우터는 vRouter을 사용한다. PRIMARY와 SECONDARY 모두 priority를 가져간다.  그래서 Primary에

 

???

 

이때 PC가 가는 곳의 MAC Address는 결정되어 있다. (0000.0007.acxx) : xx는 Group 번호이다. 이건 ???

 

정리해보면

PRIMARY인 vRouter(192.168.1.2)가 스위치에 정보를 던진다.

???

 

PRIMARY

```

conf t

int fa0/0

ip add dhcp

no sh

```

 

SECONDARY

```

conf t

int fa0/0

ip add dhcp

no sh

```

 

이렇게 해놓으면 

PRIMARY

```

int fa0/1

ip add 192.168.1.101 255.255.255.0

no sh

 

access-list 1 permit any

ip nat inside so list 1 int fa0/0 overload

int fa0/0

ip nat outside

int fa0/1

ip nat inside

```

 

SECONDARY

```

int fa0/1

ip add 192.168.1.102 255.255.255.0

no sh

 

access-list 1 permit any

ip nat inside so list 1 int fa0/0 overload

int fa0/0

ip nat outside

int fa0/1

ip nat inside

```

 

이제 vIP를 넣자

PRIMARY, SECONDARY

```

int fa0/1

standby 1 ip 192.168.1.2

standby 1 priority 110  # PRIMARY

standby 1 preempt 

standby 1 track fa0/0 20  # 네트워크 문제가 생기면 우선권 20 뻇기

```

 

priority를 넣으면 3초마다 응답을 한다. 한쪽이 죽으면 standby가 우선권을 가져간다.

만약 다시 살아나면 원래의 우선권을 가져야 한다.

이때 SECONDARY는 가중치를 안 부여한 이유는 이미 100이 default로 가지고 있어서 그렇다

 

PC

```

ip 192.168.1.100/24 192.168.1.2

ip dns 8.8.8.8

ping www.google.com  -t

```

VyOS VRRP 구성이 이와 동일한것이다

[VyOS] VRRP 구성하기 - 쿠버네티스 전문가 블로그 (sysnet4admin.blogspot.com)

 

[VyOS] VRRP 구성하기

시스템/네트워크 엔지니어를 위한 파이썬 및 최신 기술에 대한 블로그입니다.

sysnet4admin.blogspot.com

 

728x90

'Development(Web, Server, Cloud) > 22) LINUX - Cloud' 카테고리의 다른 글

클라우드 36일차  (0) 2022.02.22
클라우드 35일차 : virt, virsh, network, wok  (0) 2022.02.22
클라우드 33일차  (0) 2022.02.17
클라우드 32일차  (0) 2022.02.16
클라우드 31일차  (0) 2022.02.15