본문 바로가기
IT/리눅스

내부망 레포지토리 서버 구축 및 원격지 설정

by JGSHIN 2025. 2. 15.
SMALL

내부망 레포지토리 서버 구축 및 원격지 설정

🚀 공인 IP 서버 역할:
이 문서에서 공인 IP 서버(프록시 역할을 수행하는 서버)로 동작하는 시스템을 설정하여, 내부망에서는 직접 외부 패키지를 다운로드할 수 없으므로 원격 레포지토리를 구축하고 이를 내부망에서 사용할 수 있도록 설정합니다.


1. 내부망 레포지토리 서버 구축

내부망에서는 직접 외부와 통신할 수 없기 때문에, 공인 IP를 가진 서버를 이용하여 외부 레포지토리에서 패키지를 동기화하고, 이를 HTTP 서버를 통해 내부망에 제공하는 방식입니다.

📌 사설 레포지토리 서버 패키지 설치

 
dnf install httpd createrepo yum-utils -y
  • httpd → Apache 웹서버 설치 (레포지토리 배포용)
  • createrepo → 로컬 레포지토리 생성
  • yum-utils → reposync 등의 유틸리티 포함

📌 HTTPD 포트 변경 (필요 시)

기본적으로 HTTPD는 80번 포트를 사용하지만, 특정 환경에서는 다른 포트를 사용할 수도 있습니다.
예제에서는 8888번 포트를 사용하도록 변경합니다.

 
vi /etc/httpd/conf/httpd.conf

설정 변경:

 
Listen 8888

📌 HTTPD 서비스 활성화

 
systemctl start httpd systemctl enable httpd systemctl status httpd
  • start → HTTPD 서비스 시작
  • enable → 부팅 시 자동 실행
  • status → 현재 실행 상태 확인

2. 외부 레포지토리 데이터 동기화

공인 IP 서버에서 외부 레포지토리를 로컬 디렉토리로 복제합니다.

📌 레포지토리 다운로드

 
mkdir /var/www/html/repo

다음 명령을 실행하여 외부 레포지토리에서 패키지를 복사합니다.

 
nohup reposync -m --repoid=appstream --newest-only --download-metadata -p /var/www/html/repo &
nohup reposync -m --repoid=baseos --newest-only --download-metadata -p /var/www/html/repo &
nohup reposync -m --repoid=epel --newest-only --download-metadata -p /var/www/html/repo &
 

✅ reposync → 레포지토리 패키지를 동기화
✅ --repoid=appstream → 특정 레포지토리(AppStream)만 동기화
✅ --newest-only → 최신 버전 패키지만 다운로드
✅ -p /var/www/html/repo → 저장할 디렉토리 지정
✅ nohup → 백그라운드에서 실행하여 터미널 종료 시에도 계속 실행됨

📌 현재 동기화된 레포지토리 확인

 
yum repolist -v

3. 레포지토리 인덱스 생성

동기화된 패키지 목록을 기반으로 레포지토리 인덱스를 생성합니다.

 
createrepo -g comps.xml /var/www/html/repo/baseos
createrepo -g comps.xml /var/www/html/repo/epel
createrepo -g comps.xml /var/www/html/repo/appstream
  • createrepo → 레포지토리 메타데이터 생성
  • -g comps.xml → 레포지토리 그룹 정보 포함

4. HTTPD 서버 설정

동기화된 패키지를 내부망에서 사용할 수 있도록 Apache 설정을 수정합니다.

📌 레포지토리 접근 설정 추가

 
vi /etc/httpd/conf/httpd.conf

파일에 아래 내용을 추가합니다.

 
<Directory "/repo"> Options All Indexes FollowSymLinks AllowOverride None Require all granted </Directory>

📌 설정 설명

  • Options All Indexes FollowSymLinks → 인덱스 파일을 표시하고 심볼릭 링크를 허용
  • Require all granted → 모든 사용자에게 접근 권한 부여

📌 HTTPD 서비스 재시작

 
systemctl restart httpd

📌 브라우저에서 확인

레포지토리가 정상적으로 공유되었는지 확인하려면, 웹 브라우저에서 아래 URL을 입력합니다.

 
http://공인IP서버:8888/repo/

✅ 웹 브라우저에서 폴더 목록이 보이면 정상적으로 설정된 것입니다.


5. 원격 서버에서 레포지토리 등록

내부망에서 공인 IP 서버를 레포지토리로 추가하여 패키지를 설치할 수 있도록 설정합니다.

 
cd /etc/yum.repos.d/

다음과 같이 .repo 파일을 생성합니다.

📌 AppStream 레포지토리

 
vi appstream61.repo
 
[appstream61] name = appstream Repository baseurl=http://공인IP서버:8888/repo/appstream gpgcheck=0 enabled=1

📌 BaseOS 레포지토리

 
vi baseos61.repo
 
[baseos61] name = base Repository baseurl=http://공인IP서버:8888/repo/baseos gpgcheck=0 enabled=1

📌 EPEL 레포지토리

 
vi epel61.repo
 
[epel61]
name = epel Repository
baseurl=http://공인IP서버:8888/repo/epel
gpgcheck=0
enabled=1
 

📌 설정 설명

  • baseurl=http://공인IP서버:8888/repo/... → 원격 레포지토리 서버 주소
  • gpgcheck=0 → GPG 키 확인 비활성화
  • enabled=1 → 활성화된 레포지토리

6. 설정 적용 및 확인

새로운 레포지토리를 적용하려면 다음 명령어를 실행합니다.

 
yum clean all yum repolist

✅ yum clean all → 기존 캐시 삭제
✅ yum repolist → 새로운 레포지토리가 정상적으로 등록되었는지 확인


🔹 최종 요약

공인 IP 서버(프록시 역할 서버)에서 외부 레포지토리 데이터를 가져와 HTTP 서버로 제공
내부망 서버에서는 공인 IP 서버를 레포지토리로 등록하여 패키지 설치 가능
✅ reposync를 사용하여 패키지 다운로드, createrepo로 레포지토리 인덱스 생성
✅ 내부망에서 baseurl=http://공인IP서버:8888/repo/를 등록하여 사용

🚀 이 방법을 활용하면 외부와 차단된 환경에서도 원격지에서 패키지를 안전하게 관리할 수 있습니다!

LIST
📧 이메일 문의
by @ 2025 JGSHIN