DevOps/Linux

DMZ망에 APT Mirror 서버 구축하기

IT록흐 2025. 7. 23. 08:21
반응형

 

 

 

GNS3로 간단한 네트워크망 구성 실습하기

사내 인프라가 마땅치 않아인프라 구성에 고민하던 중 GNS3라는 시뮬레이션 환경을 알게 되었다. 네트워크 엔지니어가 아니라 전문적으로 네트워크 구성을 하지 못하지만구성하고 싶은 인프라

lordofkangs.tistory.com

 

 

이전 포스팅에서 GNS3로 간단한 네트워크 망을 구축해보았다. 

구축한 망에 Apt Mirror 서버를 구축해보자.

 

 

 

 

구성도는 위와 같다. 

 

*DMZ망 - APT Mirror 서버

*내부망  - 운영망 - 우분투 서버 ( VLAN10, 노란색원 ) 

             - 관리망 - DNS 서버 ( MGMT )

 

 

외부와 접근 가능한 DMZ망에 Apt Mirror 서버를 구축하고 

내부망에 위치한 우분투 서버는 DNS 서버로부터 IP를 받아 Apt Mirror 서버에 접근하도록 구성할 것이다. 

 

 

 

APT Mirror 서버 구축하기 

 

1. apt-mirror 패키지 설치하기 

# apt-mirror 패키지를 설치한다. 
sudo apt update
sudo apt install apt-mirror

 

 

2. 미러링할 apt 저장소 설정하기

vi /etc/apt/mirror.list

 

 

어떤 APT 저장소를 미러링할지 선택해야 한다. 

APT 미러서버의 클라이언트가 될 우분투 서버의 /etc/apt/sources.list를 확인하면 된다.

 

 

내부망 우분투 서버의  /etc/apt/sources.list

 

 

jammy, jammy-updates, jammy-backports, jammy-security를 바라본다. 그리고 deb-src는 소스를 가져오는 것이므로 주석처리 되어 있다. 그러므로 아래와 같이 /etc/apt/mirror.list에 주석처리를 해주었다. 

 

 

mirror 서버의 /etc/apt/mirror.list

 

 

3. 미러링 하기

sudo apt-mirror

 

미러링을 하려면 패키지를 저장할 많은 공간이 필요하다. 700GB - 900GB 정도 필요하므로 미리 준비를 해놓아야 한다. 

 

 

 

 

4. 웹서버(nginx) 구축하기

 

#nginx 설치하기 
sudo apt update
sudo apt install nginx

#nginx 실행하기
sudo systemctl enable --now nginx

 

 

클라이언트가 http로 접근하려면 웹서버가 구축되어야 한다. 

 

#nginx 설정하기
vi /etc/nginx/conf.d/mirror.conf

 

 

security.ubuntu.com, archive.ubuntu.com

 

# nginx 재실행하기
sudo systemctl restart nginx 

# nginx 상태확인
sudo systemctl status nginx

 

 

 

DNS 서버 구축하기 

 

# bind9 설치하기
sudo apt install bind9

 

 

# ubuntu.com zone 등록하기
vi /etc/bind/named.conf.default-zones

 

 

named.conf.default-zones 파일에 ubuntu.com 도메인 존을 등록한다. 

 

# ubuntu.com 도메인 존 생성하기
vi ubuntu.com.zone

 

 

 

 ubuntu.com 도메인 존을 생성한다. ( 디폴트로 등록된 도메인 존을 복사해서 수정하면 된다. )

 

#bind9 재실행하기
sudo systemctl restart bind9

 

 

 

 

 

네트워크 설정하기 

 

 

코어스위치 

conf t

# VLAN10 out ACL 룰 생성 
ip access-list extended VLAN10-OUT
11 permit udp 10.10.150.10 0.0.0.0 eq 53 10.10.10.0 0.0.0.255  # DNS UDP 응답 허용
12 permit tcp 10.10.150.10 0.0.0.0 eq 53 10.10.10.0 0.0.0.255  # DNS TCP 응답 허용
13 permit tcp 10.20.10.5 0.0.0.0 eq 80 10.10.10.0 0.0.0.255    # APT Mirror HTTP 응답 허용
100 deny ip any any # 나머지 모두 거부

# VLAN150(관리망) out ACL 룰 생성
ip access-list extended VLAN150-OUT
11 permit udp 10.10.0.0 0.0.255.255 10.10.150.10 0.0.0.0 eq 53 # DNS UDP 요청 허용
12 permit tcp 10.10.0.0 0.0.255.255 10.10.150.10 0.0.0.0 eq 53 # DNS TCP 요청 허용
100 deny ip any any # 나머지 모두 거부

# VLAN10 out 설정
int f0/1.10
ip access-group VLAN10-OUT out

# VLAN150 out 설정
int f0/1.150
ip access-group VLAN150-OUT out

 

 

방화벽

conf t

# DMZ망 OUT ACL 룰 생성
ip access-list extended DMZ-OUT
11 permit udp 8.8.8.8 0.0.0.0 eq 53 10.20.10.0 0.0.0.255  # 외부 DNS UDP 응답 허용
12 permit tcp 8.8.8.8 0.0.0.0 eq 53 10.20.10.0 0.0.0.255  # 외부 DNS TCP 응답 허용
13 permit tcp 10.10.0.0 0.0.255.255 10.20.10.5 0.0.0.0 eq 80 # 내부 트래픽 HTTP 요청 허용
90 permit tcp any eq 80  10.20.10.0 0.0.0.255  # 외부 HTTP 응답 허용
91 permit tcp any eq 443 10.20.10.0 0.0.0.255  # 외부 HTTPS 응답 허용
100 deny ip any any  # 나머지 모두 거부

# 내부망 OUT ACL 룰 생성
ip access-list extended Internal-OUT
10 permit tcp 10.20.10.5 0.0.0.0 eq 80  10.10.0.0 0.0.255.255 # APT Mirror HTTP 응답 허용 
100 deny ip any any # 나머지 모두 거부

# DMZ망 인터페이스 룰 설정
int f1/0
ip access-group DMZ-OUT out

# 내부망 인터페이스 룰 설정
int f0/1
ip access-group Internal-OUT out

 

 

 

 

테스트하기

 

우분투서버에 DNS 설정하기

/etc/netplan/00-installer-config.yaml

 

 

우분투 서버는 DNS 서버만 설정하면 된다. /etc/apt/source.list를 확인하면  security.ubuntu.com, archive.ubuntu.com 도메인을 바라본다. security.ubuntu.com와 archive.ubuntu.com 도메인을 적절한 IP로 변환해줄 DNS 서버의 ip를 netplan 설정에 넣어준다.

 

sudo apt-get update

 

 

 

apt update가 정상적으로 이루어짐을 확인할 수 있다. 

반응형