Инструменты пользователя

Инструменты сайта


wiki:iptables:tun0_to_tun2

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
wiki:iptables:tun0_to_tun2 [2025/04/03 15:20] – [Маршрутизация трафика] Dimanwiki:iptables:tun0_to_tun2 [2025/04/03 18:57] (текущий) Diman
Строка 1: Строка 1:
 ====== Проброс TCP трафика через SSH ====== ====== Проброс TCP трафика через SSH ======
  
-==== конфигурация ssh ==== 
  
-В файл  **/etc/ssh/sshd_config** добавляем директивы для тунеля+ 
 +===== Конфигурация ssh ===== 
 + 
 +В файле  **/etc/ssh/sshd_config** добавляем директивы для туннеля
  
 <code bash> <code bash>
 +nano etc/ssh/sshd_config
  
 X11Forwarding yes X11Forwarding yes
 PermitTunnel yes PermitTunnel yes
- 
  
 </code> </code>
  
-Устанавливаем программы для работы туннеля 
  
-<code bash> 
- 
-apt update 
-apt install uml-utilities 
- 
- 
-</code> 
  
-==== Создание туннеля ssh ====+===== Создание туннеля ssh =====
  
-Для создания туннеля используется скрипт tun.sh.+Для создания туннеля используется скрипт tun.sh. В скрипте реализован туннель директивой ssh -w. Можно использовать autossh, который умеет сам контроллировать трафик и состояние туннеля.
 <code bash> <code bash>
 #!/bin/sh #!/bin/sh
Строка 158: Строка 151:
 NET_LOCAL=192.168.230.0/24      # openvpn subnet here. NET_LOCAL=192.168.230.0/24      # openvpn subnet here.
  
 +</code>
 +
 +==== Контроль и восстановление работоспособности туннеля ssh ====
 +
 +Для контроля работы туннеля создадим скрипт **test-tun.sh** Его следует добавить в крон после проверки его работоспособности 
 +
 +<code bash>
 +
 +#!/bin/bash
 +
 +. $(dirname "$0")/set.sh
 +
 +LOG=/var/log/route-test.log
 +log(){ echo "$(date '+%F %T') $@" >> $LOG; echo "$(date '+%F %T') $@";}
 +
 +ping -c 3 $IP_REMOTE
 +if [ $? -eq  0 ]; then
 +        log 'ping success'
 +else
 +   echo "fail ping" >> $LOG
 +        log 'fail ping'
 +        pid=$(ps ax | grep $IP_REMOTE | head -n1 | awk '{print $1}' | xargs)
 +        kill -9 $pid
 +        log "kill old ssh tun $pid"
 +        sleep 9
 +        log "start new ssh tun"
 +        bash $(dirname "$0")/tun.sh
 +        sleep 2
 +        log "add routes to new ssh tunnel"
 +        bash $(dirname "$0")/r.sh
 +fi
 +
 +</code>
 +
 +==== MASQUERADE на целевом сервере ====
 +
 +Важное замечание: на целевом сервере, где поднимается ssh туннель должно быть разрешен маскарадинг на интерфейсе tun, иначе работать туннель не будет
 +<code bash>
 +
 +/etc/sysctl.conf
 +
 +net.ipv4.ip_forward=1
 +
 +
 +iptables -t nat -A POSTROUTING -j MASQUERADE
 </code> </code>
wiki/iptables/tun0_to_tun2.1743682842.txt.gz · Последнее изменение: 2025/04/03 15:20 — Diman

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki