컴퓨터 일반

[Linux] 우분투 apt 프록시를 통해 내려받기 (tsocks 사용)

Folivora 2020. 3. 7. 08:50

문제 상황

  • apt upgrade 도중 내려받기 중간에 멈춰버림. 인터넷은 당연히 연결되어 있는 상태.
  • 일반적인 현상이 아니라 정확한 원인을 모르나, 다른 네트워크에서는 이런 현상이 발생하지 않는다. 무언가 내부 네트워크에서 사용되는 캐시 서버 문제인 것 같다. 
  • 다른 네트워크에 있는 컴퓨터를 사용해서 apt 패키지를 다운로드 받고 싶음.

모식도: Dynamic port forwarding을 통해서 SSH 서버를 SOCKS 서버처럼 만들고, tsocks을 사용해서 APT package manager을 속여서(?) 12345 포트를 사용한다. 참고로 APT package manager와 SSH client는 같은 컴퓨터.

 

필요한 것

  • SSH 가능한 외부 서버 (Dynamic Port Forwarding)
  • tsocks 설치하기 ($ sudo apt install tsocks)

해야 할 일

1) /etc/tsocks.conf 편집하기

# Default server
# For connections that aren't to the local subnets or to 150.0.0.0/255.255.0.0
# the server at 192.168.0.1 should be used (again, hostnames could be used
# too, see note above)

server = 127.0.0.1
# Server type defaults to 4 so we need to specify it as 5 for this one
server_type = 5
# The port defaults to 1080 but I've stated it here for clarity 
server_port = 12345 

SSH의 Dynamic port forwarding을 사용할 예정. Dynamic port forwarding은 SSH 서버를 마치 프록시 (SOCKS) 서버처럼 동작하게 한다. 서버 주소는 127.0.0.1 (localhost), 그리고 포트는 아무거나 골랐다 (12345). 

 

2) Dynamic port forwarding 설정하기

ssh -D 12345 <server-address> -N

-D <port_number> 으로 dynamic port forwarding 을 설정한다. Shell 이 필요한 것은 아니므로 -N 옵션도 같이 넣었다.

 

 

3) tsocks를 붙인다.

sudo tsocks apt upgrade

재미있어 보이는 것은 tsocks의 동작 원리이다. 자세히는 파보지 않았지만, 리눅스에서 제공하는 socket 관련 함수들을 다시 매핑하여 SOCKS 프록시를 설정한 것처럼 만들어준다. 

 

관련 링크

tsocks를 사용하지 않고 apt.conf 에서 Acquire::http::Proxy 를 설정하는 방법도 있다. 그러나 별도로 프록시 서버를 가지고 있어야 한다.

 

How to Set the Proxy for APT on Ubuntu 18.04 - Serverlab

Learn how to set APT proxy settings on Ubuntu Server to allow packages from remote repositories to be installed and updated when behind a proxy server.

www.serverlab.ca