Skip to content

Instantly share code, notes, and snippets.

@haron
Last active April 23, 2018 13:15
Show Gist options
  • Save haron/b9856e80c216a4a8678652aef4a84061 to your computer and use it in GitHub Desktop.
Save haron/b9856e80c216a4a8678652aef4a84061 to your computer and use it in GitHub Desktop.
Скрипт для установки SOCKS-прокси

Скрипт для установки SOCKS-прокси

Что нужно для его работы

Сервер под Ubuntu 16.04 (или более новой версией), на который вы можете зайти как root или как пользователь с sudo без пароля. Рабочая станция под Macos или Linux - на ней должны работать стандартные команды: ssh, make, sed, awk

Как им пользоваться

  1. Создайте файл users.txt, где будут имена пользователей и пароли в формате:

     user1:password1
     user2:password2
    
  2. Поменяйте имя пользователя и сервер в первой строчке Makefile на актуальные:

     HOST = realuser@my.real.host.net
    
  3. Запустите команду:

     make
    

Диагностика

make status
make logs
dante:
image: vimagick/dante
ports:
- "9905:1080"
volumes:
- ./sockd.conf:/etc/sockd.conf
restart: always
HOST = user@my.host.net
PORT = 9905
REMOTE_PATH ?= danted
CONTAINER ?= danted_dante_1
.NOTPARALLEL: all
.EXPORT_ALL_VARIABLES: all
all: stop install-docker build users status links
stop:
ssh -t $(HOST) "[[ -f $(REMOTE_PATH)/docker-compose.yml ]] && { cd $(REMOTE_PATH); sudo docker-compose kill; } || true"
install-docker:
ssh -t $(HOST) "which docker-compose >/dev/null 2>&1 || sudo apt-get install -y docker.io docker-compose"
build:
ssh $(HOST) mkdir -p $(REMOTE_PATH)
scp -r *.conf *.yml $(HOST):$(REMOTE_PATH)
ssh -t $(HOST) "cd $(REMOTE_PATH); sudo docker-compose up --build -d"
users:
sed s/:.*// users.txt | xargs -n1 ssh $(HOST) sudo docker exec $(CONTAINER) /usr/sbin/userdel -rf >/dev/null 2>/dev/null; true
sed 's/.*/&:::::/' < users.txt | ssh $(HOST) sudo docker exec -i $(CONTAINER) /usr/sbin/newusers
links:
@echo
@echo "Proxy links:"
@awk -F: '{print "tg://socks?server=$(HOST)&port=$(PORT)&user="$$1"&pass="$$2}' < users.txt
logs:
ssh -t $(HOST) "cd $(REMOTE_PATH); sudo docker-compose logs -tf"
status:
ssh -t $(HOST) "cd $(REMOTE_PATH); sudo docker-compose ps"
debug: 0
logoutput: stderr
internal: 0.0.0.0 port = 1080
external: eth0
socksmethod: username
clientmethod: none
user.privileged: root
user.unprivileged: nobody
client pass {
from: 0.0.0.0/0 port 1-65535 to: 0.0.0.0/0
log: error
}
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
socksmethod: username
log: error
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment