1. vm1
2. vm2
3. vm3
4. vm4
5. vm5
- vm5의 경우 처음 부팅을 했을때 10.0.0.0 네트워크 어댑터를 제외하고는 인식되지 않았다.
해결방법
- ifconfig에서 보이지않는다면 ip addr 명령으로 확인
- 원하는 네트워크 어댑터가 down되어 있다면 다음의 명령어 실행
sudo ifconfig [어댑터이름] up sudo dhclient
sudo route del default gw 10.0.x.2
- 연결 안됨
1. 설정 파일 위치
sudo vi /etc/sysctl.conf
2. 패킷 포워딩 설정하기
- #net.ipv4.ip_forward=1
- 설정파일에서 위와같이 주석처리된 부분 주석처리 해제 하기
- net.ipv4.ip_forward=1
4. 패킷 포워딩 설정 적용하기
sudo sysctl -p
5. 사설네트워크#1 <-> 사설네트워크#2 연결 확인
- 연결 됨
- 패킷 포워딩 설정을 통해 사설네트워크#1과 사설네트워크#2 의 연결은 설정했지만,
- 사설 IP 주소이기때문에 외부 인터넷은 연결 안됨
- 즉 vm5에서 NAT를 설정해주어야 함
- 사설 IP 주소를 공인 IP 주소로 변경하여 외부에 전송
- 사설 IP 주소의 요청에 대한 응답이라는 것을 기억(stateful) 해야함
- 아래와 같은 방법을 통해 이루어짐
- 패킷을 처리할 규칙을 담고 있는 테이블
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. 재부팅 후 잘 저장되어 있는지 확인하기