Как можно настроить систему Linux для перенаправления всего интернет-трафика через SSH с использованием ключа «-D»?

Вот как можно переформулировать ваш вопрос для повышения ясности и структуры:

В данной сети, состоящей из Android устройства (WAN - LTE, LAN - WIFI-клиент), WIFI-роутера (LAN - WIFI точка доступа) и Debian системы (LAN - WIFI-клиент), на Android с использованием Termux запущен SSH-сервер. WIFI-роутер используется исключительно для организации локальной сети без доступа в интернет. Debian ноутбук подключается к смартфону через команду "ssh -ND8888 host.lan", что позволяет создать локальный SOCKS-прокси на порту 8888. Я использую этот прокси для перенаправления трафика браузера и некоторых других приложений через настройки и proxychains, но устал постоянно вручную вводить команды для SSH и proxychains. 

Я обнаружил пакет network-manager-ssh для Debian, который, согласно информации на GitHub, выполняет одну из SSH команд с ключом -w. Однако, по логам видно, что Android не позволяет создавать TUN интерфейсы, из-за чего данное соединение не удается установить. 

Существуют ли другие простые решения для автоматизации этого процесса? Обратите внимание, что использование точки доступа на смартфоне мне не подходит.
  • 19 октября 2024 г. 2:53
Ответы на вопрос 2
Для автоматизации перенаправления интернет-трафика с Debian-ноутбука через SSH-сервер на вашем Android-устройстве с использованием SOCKS-прокси, вы можете использовать несколько подходов. Я опишу несколько вариантов, которые могут помочь вам сделать процесс более удобным.

### 1. Скрипт для автоматического соединения
Вы можете создать простой скрипт, который будет автоматически устанавливать SSH-соединение и настраивать прокси, когда вам это нужно. Например:

```bash
#!/bin/bash

# Указываем адрес SSH-сервера и порт на SOCKS-прокси
SSH_USER="username"  # Ваше имя пользователя на Android
SSH_HOST="host.lan"  # IP-адрес вашего Android-устройства
SOCKS_PORT="8888"

# Подключаемся к SSH с ключом -D
ssh -ND"$SOCKS_PORT" "$SSH_USER"@"$SSH_HOST" &
echo "SOCKS Proxy установлен на порту $SOCKS_PORT"
```

Сохраните этот скрипт в файл, например `start_ssh_proxy.sh`, и дайте ему права на выполнение:
```bash
chmod +x start_ssh_proxy.sh
```

Теперь вы можете запускать этот скрипт, и он автоматически подключит вас к вашему SSH-серверу.

### 2. Настройка proxychains
Для использования прокси с `proxychains`, вы можете настроить файл конфигурации `proxychains.conf`, чтобы он автоматически использовал ваш SOCKS-прокси. Откройте файл для редактирования, чаще всего он находится по пути `/etc/proxychains.conf` или `~/.proxychains/proxychains.conf`:

```ini
# Убедитесь, что следующая строка раскомментирована
dynamic_chain

# Настройка вашего прокси
# Укажите здесь настройки вашего SOCKS-прокси
[ProxyList]
socks5  127.0.0.1 8888
```

Теперь всякий раз, когда вы хотите запустить приложение через прокси, просто добавьте `proxychains` перед его запуском:
```bash
proxychains firefox
```

### 3. Автоматизация через системные службы
Если вы хотите ещё больше автоматизировать процесс, вы можете создать службу systemd на случай, если вы хотите, чтобы соединение автоматически устанавливалось при загрузке системы или при запуске определенных приложений.

Создайте файл службы, например `/etc/systemd/system/ssh-proxy.service`:

```ini
[Unit]
Description=SSH SOCKS Proxy

[Service]
ExecStart=/usr/bin/ssh -ND8888 [email protected]
Restart=always

[Install]
WantedBy=multi-user.target
```

После создания файла выполните следующие команды для активации службы:

```bash
sudo systemctl daemon-reload
sudo systemctl enable ssh-proxy.service
sudo systemctl start ssh-proxy.service
```

### 4. Использование `autossh`
Если вам нужно поддерживать постоянное соединение и автоматически переподключаться при разрыве, вы можете использовать `autossh`. Установите его, если он ещё не установлен:

```bash
sudo apt install autossh
```

Вы можете обновить скрипт для использования `autossh`:

```bash
#!/bin/bash
SSH_USER="username"
SSH_HOST="host.lan"
SOCKS_PORT="8888"

# Используем autossh для постоянного соединения
autossh -M 0 -ND"$SOCKS_PORT" "$SSH_USER"@"$SSH_HOST" &
echo "SOCKS Proxy установлен на порту $SOCKS_PORT"
```

Теперь вы можете запустить этот скрипт, и `autossh` будет заботиться о постоянном соединении.

### Заключение
Использование любого из вышеперечисленных методов позволит вам автоматизировать процесс подключения к вашему SSH-серверу и настройку прокси. Выберите вариант, который лучше всего соответствует вашим нуждам, и настройте его по своему усмотрению.
Если есть список команд, то их можно объединить в  один скрипт и запускать его. 
(скрипт пишем и запускаем там, где ранее запускали команды)

Если хочется полной автоматизации, (что бы все само), то нужен критерий: когда и как часто надо запускать данный скрипт..
Похожие вопросы