리눅스 데브코스[6주차 - 4]<최종 테스트 베드 구축>

심우열·2023년 5월 11일
0

1. 최종 테스트 베드 구축

1. vm[1-5] 설정하기

1. vm1-5 생성

2. NAT 네트워크 생성

3. VM별 네트워크 어댑터 추가

4. VM별 hostname, IP 주소, Gateway 설정

1. vm1

2. vm2

3. vm3

4. vm4

5. vm5

  • vm5의 경우 처음 부팅을 했을때 10.0.0.0 네트워크 어댑터를 제외하고는 인식되지 않았다.

해결방법

  1. ifconfig에서 보이지않는다면 ip addr 명령으로 확인
  2. 원하는 네트워크 어댑터가 down되어 있다면 다음의 명령어 실행
sudo ifconfig [어댑터이름] up
sudo dhclient

5. vm[1-4]의 10.0.x.2 게이트웨이 삭제

sudo route del default gw 10.0.x.2

2. 사설네트워크#1 과 사설네트워크#2 연결하기: 패킷 포워딩

1. 사설네트워크#1 <-> 사설네트워크#2 연결 확인

  • 연결 안됨

2. vm5의 게이트웨이에 패킷 포워딩 설정

1. 설정 파일 위치

sudo vi /etc/sysctl.conf

2. 패킷 포워딩 설정하기

  • #net.ipv4.ip_forward=1
  • 설정파일에서 위와같이 주석처리된 부분 주석처리 해제 하기
  • net.ipv4.ip_forward=1

4. 패킷 포워딩 설정 적용하기

sudo sysctl -p

5. 사설네트워크#1 <-> 사설네트워크#2 연결 확인

  • 연결 됨

3. 외부 인터넷과 연결하기

  • 패킷 포워딩 설정을 통해 사설네트워크#1과 사설네트워크#2 의 연결은 설정했지만,
  • 사설 IP 주소이기때문에 외부 인터넷은 연결 안됨
  • 즉 vm5에서 NAT를 설정해주어야 함

1. NAT(Network Address Translation)

  • 사설 IP 주소를 공인 IP 주소로 변경하여 외부에 전송
  • 사설 IP 주소의 요청에 대한 응답이라는 것을 기억(stateful) 해야함
  • 아래와 같은 방법을 통해 이루어짐

2. iptables

  • 패킷을 처리할 규칙을 담고 있는 테이블

3. iptables 명령으로 NAT 설정해보기

1. iptables nat관련 명령어

# 현재 설정된 iptables nat 설정 목록 출력
sudo iptables -t nat -L
# nat 테이블 설정
sudo iptables -t nat -A POSTROUTING -o [네트워크 어댑터 이름] -j MASQUERADE

2. 테이블 종류

-t옵션을 생략하면 iptables는 기본적으로 filter 테이블(방화벽)로 동작

  • NAT
  • Filter
  • Mangle

3. 사설네트워크에서 외부 인터넷 연결 확인

1. vm5의 iptables에 nat설정

2. vm1에서 외부 인터넷 연결 확인

  • 외부 인터넷 연결 됨

3. vm5의 iptables에 nat설정 삭제

4. vm1에서 외부 인터넷 연결 확인

  • 외부 인터넷 연결 안 됨

4. iptables로 방화벽 설정하기

# iptables에 설정된 방화벽 설정 목록 출력
sudo iptables -L
# 방화벽 테이블 모든 규칙 초기화
sudo iptables -F
# iptables에 설정된 포워드 drop
sudo iptables -P FORWARD DROP
# iptables에 설정된 포워드 accept
sudo iptables -P FORWARD ACCEPT

5. 위와 같이 설정하면 재부팅시 설정 사라짐

  • 재부팅 이전 iptables list
  • 재부팅 이후 iptables list
  • 위와 같이 재부팅시 MASQUERADE 설정 사라짐

이유

  • iptables는 리눅스 커널 메모리를 직접 제어하기 때문
  • 재부팅시에는 메모리가 날아가기 때문에 설정도 날아감

6. 해결방법

1. iptables-persistent 설치

sudo apt install iptables-persistent

2. iptables 설정 저장하기

sudo sh -c "iptables-save > /etc/iptables/rules.v4"

3. 재부팅 후 잘 저장되어 있는지 확인하기

profile
Dev Ops, "Git, Linux, Docker, Kubernetes, ansible, " .

0개의 댓글