ETC

Youtube Music를 위한 오라클 클라우드 Proxy 서버 설정 방법

Darfin 2026. 9. 28. 11:47

 

Oracle Cloud Squid 프록시 서버 구축 및 YouTube Music Morphe 설정 매뉴얼

Oracle Cloud Ubuntu 서버에 Squid HTTP 프록시를 설치하고, ID/PW 인증을 적용한 뒤 YouTube Music Morphe에서 사용하는 전체 과정을 정리한 문서입니다.

서버Oracle Cloud / Ubuntu
공인 IP[서버IP주소]
프록시Squid
포트3128/TCP
사용자proxyuser
비밀번호ProxyPass123!

1. 최종 구성

YouTube Music Morphe
        │
        │ HTTP Proxy
        │ [서버IP주소]:3128
        ▼
┌──────────────────────────────┐
│ Oracle Cloud Ubuntu          │
│                              │
│ Squid :3128                  │
│ 사용자: proxyuser              │
│                              │
│ iptables                     │
│ TCP 3128 허용                │
└──────────────┬───────────────┘
               │
               ▼
            Internet
               │
               ▼
            YouTube
최종 테스트 결과: 별도의 서버(usserver)에서 [서버IP주소]:3128으로 Squid 프록시에 접속하여 YouTube HTTPS 연결이 정상적으로 이루어지는 것을 확인했습니다.

2. 서버 정보

항목 설정값
서버 이름 오라클 서버
공인 IPv4 [서버IP주소]
사설 IPv4 10.0.0.46
프록시 프로그램 Squid
프록시 포트 3128/TCP
Squid 사용자 proxyuser
Squid 비밀번호 ProxyPass123!
보안 주의: 이 문서에 포함된 비밀번호는 이 매뉴얼에서 임의로 지정한 예시값입니다. 인터넷에 공개하거나 다른 사람과 공유하는 매뉴얼에서는 반드시 비밀번호를 변경하세요.

3. Squid 설치

패키지 목록 업데이트

sudo apt update

Squid 설치

sudo apt install squid apache2-utils -y

Squid 서비스 확인

sudo systemctl status squid

active (running) 상태이면 정상입니다.

4. Squid ID/PW 인증 설정

인증 계정 생성

Squid 인증용 사용자 파일을 생성합니다.

sudo htpasswd -c /etc/squid/passwd proxyuser

비밀번호 입력 시 ProxyPass123!를 사용했습니다.

인증 파일 확인

sudo cat /etc/squid/passwd

비밀번호는 평문으로 저장되지 않고 해시 형태로 저장됩니다.

5. Squid 설정

설정 파일:

/etc/squid/squid.conf

핵심 설정은 다음과 같은 구조입니다.

http_port 3128

auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic realm Squid Proxy
acl authenticated proxy_auth REQUIRED

http_access allow authenticated
http_access deny all

설정 파일을 수정한 뒤 문법을 확인합니다.

sudo squid -k parse

오류가 없다면 Squid를 재시작합니다.

sudo systemctl restart squid
sudo systemctl enable squid

6. Squid가 3128 포트를 듣고 있는지 확인

sudo ss -lntp | grep 3128

정상적인 경우 다음과 비슷하게 나타납니다.

LISTEN 0  ... 0.0.0.0:3128 ... squid

*:3128 또는 0.0.0.0:3128 형태라면 외부 인터페이스에서도 연결을 받을 수 있습니다.

7. Oracle Cloud 보안 규칙

Oracle Cloud의 해당 인스턴스에 연결된 VCN Security List 또는 Network Security Group에서 다음 Ingress 규칙을 허용합니다.

항목 값
Direction Ingress
Source CIDR 0.0.0.0/0
Protocol TCP
Destination Port 3128
보안 권장: 실제 운영에서는 모든 IP에 3128을 공개하기보다 사용자의 고정 공인 IP 또는 필요한 네트워크만 Source CIDR로 제한하는 것이 안전합니다.

8. 이번에 발생했던 접속 문제와 해결 방법

증상

외부 서버에서 다음과 같이 프록시에 연결할 때:

curl -v -U 'proxyuser:ProxyPass123!' \
-x http://[서버IP주소]:3128 \
https://www.youtube.com/

처음에는 다음과 같은 오류가 발생했습니다.

connect to [서버IP주소] port 3128 ... failed: No route to host

원인 확인

오라클 서버에서 패킷을 확인했을 때 외부에서 들어오는 TCP SYN이 서버까지 도달했습니다.

158.101.11.166.xxxxx > 10.0.0.46.3128: Flags [S]

하지만 SYN/ACK 응답이 나가지 않았습니다.

iptables INPUT 규칙을 확인한 결과:

5  ACCEPT  tcp  ... tcp dpt:22
6  REJECT  all  ... reject-with icmp-host-prohibited

즉 SSH(22번) 이외의 신규 TCP 연결이 마지막 REJECT 규칙에 걸리고 있었습니다.

해결

REJECT 규칙보다 앞에 TCP 3128 허용 규칙을 삽입했습니다.

sudo iptables -I INPUT 6 -p tcp --dport 3128 -j ACCEPT

이후 외부 서버에서 Squid 접속이 정상적으로 성공했습니다.

9. iptables 최종 확인

sudo iptables -L INPUT -n -v --line-numbers

핵심적으로 다음과 같은 구조여야 합니다.

5  ACCEPT  tcp  ... tcp dpt:22
6  ACCEPT  tcp  ... tcp dpt:3128
7  REJECT  all  ... reject-with icmp-host-prohibited

3128 허용 규칙은 반드시 마지막 REJECT보다 위에 있어야 합니다.

10. iptables 규칙 영구 저장

수동으로 추가한 iptables 규칙은 재부팅 후 사라질 수 있으므로 영구 저장합니다.

sudo apt install iptables-persistent -y
sudo netfilter-persistent save

현재 저장된 규칙을 확인하려면:

sudo iptables -L INPUT -n -v --line-numbers

재부팅 후에도 3128 ACCEPT 규칙이 존재하는지 확인하는 것이 좋습니다.

11. 외부 서버에서 프록시 테스트

다른 서버 또는 PC에서 다음 명령을 실행합니다.

curl -v -U 'proxyuser:ProxyPass123!' \
-x http://[서버IP주소]:3128 \
https://www.youtube.com/

정상이면 다음과 비슷한 메시지가 표시됩니다.

* Connected to [서버IP주소] ([서버IP주소]) port 3128

이 단계에서 접속이 성공하면 네트워크 및 Squid 인증은 정상입니다.

12. Squid 접속 로그 확인

오라클 서버에서 다음을 실행합니다.

sudo tail -f /var/log/squid/access.log

YouTube HTTPS 연결이 프록시를 통해 이루어지면 다음과 비슷한 로그가 나타납니다.

TCP_TUNNEL/200 ... CONNECT www.youtube.com:443 proxyuser ...

TCP_TUNNEL/200이 확인되면 HTTPS CONNECT 터널이 정상적으로 생성된 것입니다.

13. YouTube Music Morphe 프록시 설정

YouTube Music Morphe의 Network / Proxy 설정에서 다음 값을 사용합니다.

항목 값
Proxy ON
Proxy Type HTTP
Host [서버IP주소]
Port 3128
Username proxyuser
Password ProxyPass123!
HTTPS Proxy 처음에는 OFF
Direct connection fallback 실제 프록시 테스트 시 OFF 권장

설정 후 YouTube Music을 실행하고 오라클 서버의 Squid 로그를 확인하면 Morphe가 실제 프록시를 사용하는지 확인할 수 있습니다.

14. Morphe 프록시 사용 여부 확인

오라클 서버:

sudo tail -f /var/log/squid/access.log

그 상태에서 스마트폰의 YouTube Music Morphe를 실행하고 음악 또는 동영상을 재생합니다.

Squid 로그에 다음과 같은 연결이 계속 기록되면 프록시를 통해 통신하고 있는 것입니다.

TCP_TUNNEL/200 ... CONNECT ...:443 proxyuser ...
판단 방법: Morphe에서 음악 재생 시점과 Squid access.log의 CONNECT 로그 발생 시점이 일치하면 프록시 적용 여부를 쉽게 확인할 수 있습니다.

15. 여러 사람이 하나의 계정을 사용하는 경우

하나의 Squid 인증 계정(proxyuser)을 여러 클라이언트가 동시에 사용할 수 있습니다. Squid 자체에서 동일 계정의 동시 접속을 반드시 1명으로 제한하는 구조는 아닙니다.

다만 여러 사용자가 공유하면:

  • 전체 서버의 네트워크 대역폭을 함께 사용합니다.
  • access.log에서 사용자별 구분이 어려워집니다.
  • 프록시 계정의 비밀번호가 여러 사람에게 노출됩니다.
  • 인터넷에 공개된 프록시 계정으로 관리하지 않는 것이 좋습니다.

사용자가 많아지면 사람 또는 기기별로 Squid 계정을 별도로 만드는 방법을 권장합니다.

16. 운영 및 점검 명령어

Squid 상태

sudo systemctl status squid

Squid 재시작

sudo systemctl restart squid

Squid 설정 검사

sudo squid -k parse

3128 포트 확인

sudo ss -lntp | grep 3128

실시간 접속 로그

sudo tail -f /var/log/squid/access.log

iptables INPUT 확인

sudo iptables -L INPUT -n -v --line-numbers

전체 nftables 규칙 확인

sudo nft list ruleset

17. 장애 발생 시 점검 순서

  1. Squid가 실행 중인지 확인
  2. 3128 포트가 LISTEN 상태인지 확인
  3. Oracle Cloud Ingress에서 TCP 3128이 허용되어 있는지 확인
  4. iptables INPUT에서 TCP 3128 ACCEPT가 REJECT보다 위에 있는지 확인
  5. 외부 서버에서 curl로 프록시 접속 테스트
  6. Squid access.log에서 CONNECT 로그 확인
  7. 마지막으로 Morphe의 Proxy 설정 확인

한 번에 확인하는 기본 명령

sudo systemctl status squid --no-pager
sudo ss -lntp | grep 3128
sudo iptables -L INPUT -n -v --line-numbers
sudo tail -n 20 /var/log/squid/access.log

18. 최종 체크리스트

항목 상태
Oracle Cloud Ubuntu 서버 구축 완료
Squid 설치 완료
Squid 3128 포트 정상
ID/PW 인증 정상
Oracle Cloud TCP 3128 Ingress 허용
iptables TCP 3128 허용
외부 서버 → Squid 접속 성공
Squid → YouTube 정상
YouTube HTTPS CONNECT 정상
Morphe Proxy 설정 설정 가능

19. 보안 권장사항

  • 가능하면 TCP 3128의 Source CIDR을 사용할 클라이언트 IP로 제한합니다.
  • 프록시 계정 비밀번호를 다른 서비스의 비밀번호와 동일하게 사용하지 않습니다.
  • 공개 프록시처럼 누구나 사용할 수 있는 상태로 장기간 운영하지 않습니다.
  • Squid access.log를 주기적으로 확인합니다.
  • 사용하지 않는 포트는 Oracle Cloud와 서버 방화벽 양쪽에서 차단합니다.
  • 비밀번호를 변경했다면 /etc/squid/passwd의 계정도 함께 관리합니다.

20. 빠른 재설정용 명령 모음

이미 Squid 설정이 되어 있다는 전제에서 방화벽 문제를 해결할 때 사용하는 핵심 명령입니다.

# TCP 3128 허용
sudo iptables -I INPUT 6 -p tcp --dport 3128 -j ACCEPT

# 규칙 확인
sudo iptables -L INPUT -n -v --line-numbers

# 규칙 영구 저장
sudo apt install iptables-persistent -y
sudo netfilter-persistent save

# Squid 상태
sudo systemctl status squid

# 3128 LISTEN 확인
sudo ss -lntp | grep 3128

# Squid 로그
sudo tail -f /var/log/squid/access.log

# 외부 클라이언트 테스트
curl -v -U 'proxyuser:ProxyPass123!' \
-x http://[서버IP주소]:3128 \
https://www.youtube.com/