Oracle Cloud Squid 프록시 서버 구축 및 YouTube Music Morphe 설정 매뉴얼
Oracle Cloud Ubuntu 서버에 Squid HTTP 프록시를 설치하고, ID/PW 인증을 적용한 뒤 YouTube Music Morphe에서 사용하는 전체 과정을 정리한 문서입니다.
1. 최종 구성
YouTube Music Morphe
│
│ HTTP Proxy
│ [서버IP주소]:3128
▼
┌──────────────────────────────┐
│ Oracle Cloud Ubuntu │
│ │
│ Squid :3128 │
│ 사용자: proxyuser │
│ │
│ iptables │
│ TCP 3128 허용 │
└──────────────┬───────────────┘
│
▼
Internet
│
▼
YouTube
[서버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 |
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 ...
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. 장애 발생 시 점검 순서
- Squid가 실행 중인지 확인
- 3128 포트가 LISTEN 상태인지 확인
- Oracle Cloud Ingress에서 TCP 3128이 허용되어 있는지 확인
- iptables INPUT에서 TCP 3128 ACCEPT가 REJECT보다 위에 있는지 확인
- 외부 서버에서 curl로 프록시 접속 테스트
- Squid access.log에서 CONNECT 로그 확인
- 마지막으로 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/
'ETC' 카테고리의 다른 글
| 갤럭시 S20 Snapdragon LLM (0) | 2026.09.21 |
|---|
