microsocks 는 C 로 짠 작은 SOCKS5 서버다. 외부 라이브러리 없이 빌드되고 바이너리 하나로 동작한다. 사용자 · 암호 인증(RFC 1929), 화이트리스트, 나가는 주소 바인딩 정도만 지원하며 ACL 이나 로그 기능은 없다. 폐쇄망 점프 호스트에서 ssh 대신 SOCKS 터널을 열어 줄 때 쓴다. 현행 버전은 v1.0.1 이다[1].
gcc · make — RHEL 계열 sudo dnf -y install gcc make gitcd /usr/local/src
sudo git clone https://github.com/rofl0r/microsocks.git
cd microsocks
sudo git checkout v1.0.1
sudo make
sudo install -m 755 microsocks /usr/local/bin/microsocks
microsocks -1 -q -i listenip -p port -u user -P password -b bindaddr -w whitelist -t timeout
| 옵션 | 뜻 |
|---|---|
-i |
리슨 주소. 기본 0.0.0.0 |
-p |
리슨 포트. 기본 1080 |
-u / -P |
사용자 · 암호 인증. 둘 다 주면 인증이 켜진다 |
-1 |
auth-once. 한 번 인증한 IP 는 이후 인증 없이 통과 |
-b |
나가는 연결을 묶을 로컬 주소 |
-w |
인증 없이 허용할 IP 화이트리스트 (쉼표 구분) |
-q |
로그 끔 |
-t |
연결 타임아웃 (초) |
sudo useradd -r -s /sbin/nologin microsocks
sudo vi /etc/systemd/system/microsocks.service
[Unit]
Description=microsocks SOCKS5 proxy
After=network-online.target
Wants=network-online.target
[Service]
User=microsocks
ExecStart=/usr/local/bin/microsocks -i 0.0.0.0 -p 1080 -u proxyuser -P ${PASSWORD}
Restart=on-failure
NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
암호를 유닛에 그대로 두지 않으려면 EnvironmentFile=/etc/microsocks.env 에 PASSWORD=... 를 두고 위처럼 ${PASSWORD} 로 참조한다. 인증이 필요 없는 내부망이면 -u · -P 를 빼고 -w 192.168.0.0 처럼 화이트리스트를 둔다.
sudo systemctl daemon-reload
sudo systemctl enable --now microsocks
sudo systemctl status microsocks
sudo firewall-cmd --permanent --add-port=1080/tcp
sudo firewall-cmd --reload
서버에서 리슨 상태를 보고, 클라이언트에서 curl 로 통과시킨다.
ss -tlnp | grep 1080
curl -x socks5h://proxyuser:${PASSWORD}@proxy.example:1080 https://ifconfig.me
socks5h 는 DNS 조회까지 프록시가 하도록 한다. 응답으로 프록시 서버의 공인 IP 가 나오면 정상이다. dnf 나 apt 는 SOCKS 를 직접 쓰지 못하므로 그런 용도라면 Squid 를 쓴다.
최신 버전 v1.0.1 — 2026-09-20 확인. https://github.com/rofl0r/microsocks/tags ↩︎