wiki:iptables:tun0_to_tun2
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
wiki:iptables:tun0_to_tun2 [2025/04/03 15:07] – Diman | wiki:iptables:tun0_to_tun2 [2025/04/03 18:57] (текущий) – Diman | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
====== Проброс TCP трафика через SSH ====== | ====== Проброс TCP трафика через SSH ====== | ||
- | ===== конфигурация ssh ===== | ||
- | В файл | + | |
+ | ===== Конфигурация ssh ===== | ||
+ | |||
+ | В файле | ||
<code bash> | <code bash> | ||
+ | nano etc/ | ||
X11Forwarding yes | X11Forwarding yes | ||
PermitTunnel yes | PermitTunnel yes | ||
- | |||
</ | </ | ||
- | Устанавливаем программы для работы туннеля | ||
- | <code bash> | ||
- | apt update | + | ===== Создание туннеля ssh ===== |
- | apt install uml-utilities | + | |
- | + | Для создания туннеля | |
- | </ | + | |
- | + | ||
- | ==== Создание туннеля | + | |
- | + | ||
- | Для создания туннеля используется скрипт sh. | + | |
<code bash> | <code bash> | ||
#!/bin/sh | #!/bin/sh | ||
Строка 51: | Строка 44: | ||
</ | </ | ||
- | ==== Проброс трафика с tun0 на tun2 ==== | + | ==== Проброс трафика с tun0 на tun8 и обратно |
Строка 78: | Строка 71: | ||
</ | </ | ||
+ | |||
+ | ==== Маршрутизация трафика ==== | ||
+ | |||
+ | Добавляем таблицу маршрутизации для vpn | ||
<code bash> | <code bash> | ||
- | / | + | nano / |
# | # | ||
Строка 97: | Строка 94: | ||
</ | </ | ||
+ | Проброс трафика будем осуществлять скриптом маршрутизации r.sh | ||
+ | |||
+ | <code bash> | ||
+ | #!/bin/sh | ||
+ | |||
+ | . $(dirname " | ||
+ | |||
+ | iptables -F | ||
+ | iptables -t nat -F | ||
+ | iptables -t mangle -F | ||
+ | |||
+ | #iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE | ||
+ | #iptables -t nat -A POSTROUTING -o tun8 -j MASQUERADE | ||
+ | iptables -t nat -A POSTROUTING -j MASQUERADE | ||
+ | #iptables -A INPUT -i tun8 -m state --state ESTABLISHED, | ||
+ | #iptables -A INPUT -i tun0 -m state --state ESTABLISHED, | ||
+ | |||
+ | iptables -A FORWARD -i tun$TUN_OVPN -o tun$TUN_REMOTE -s $NET_LOCAL -j ACCEPT | ||
+ | iptables -A FORWARD -i tun$TUN_REMOTE -o tun$TUN_OVPN -d $NET_LOCAL -j ACCEPT | ||
+ | |||
+ | #ip route del default dev tun$TUN_REMOTE | ||
+ | #ip route del $NET_LOCAL dev eth0 table vpn | ||
+ | #ip rule del from $NET_LOCAL table vpn | ||
+ | |||
+ | ip route del default table vpn | ||
+ | ip route add default dev tun$TUN_REMOTE | ||
+ | |||
+ | ip route del $NET_LOCAL dev $ETH_NAME table vpn | ||
+ | ip route add $NET_LOCAL dev $ETH_NAME table vpn | ||
+ | ip rule flush table vpn | ||
+ | ip rule add from $NET_LOCAL table vpn | ||
+ | |||
+ | iptables -L -nv | ||
+ | iptables -L -n -t nat | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== Настройки конфигурации туннеля ==== | ||
+ | |||
+ | Настройки сохраняем в файле **set.sh** | ||
+ | |||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | |||
+ | HOST=192.168.2.180 | ||
+ | HOST_PORT=22 | ||
+ | |||
+ | ETH_NAME=' | ||
+ | TUN_OVPN=0 | ||
+ | TUN_LOCAL=8 | ||
+ | TUN_REMOTE=8 | ||
+ | IP_LOCAL=172.30.8.2 | ||
+ | IP_REMOTE=172.30.8.1 | ||
+ | IP_MASK=30 | ||
+ | NET_REMOTE=172.16.0.0/ | ||
+ | NET_LOCAL=192.168.230.0/ | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== Контроль и восстановление работоспособности туннеля ssh ==== | ||
+ | |||
+ | Для контроля работы туннеля создадим скрипт **test-tun.sh** Его следует добавить в крон после проверки его работоспособности | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | #!/bin/bash | ||
+ | |||
+ | . $(dirname " | ||
+ | |||
+ | LOG=/ | ||
+ | log(){ echo " | ||
+ | |||
+ | 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 ' | ||
+ | kill -9 $pid | ||
+ | log "kill old ssh tun $pid" | ||
+ | sleep 9 | ||
+ | log "start new ssh tun" | ||
+ | bash $(dirname " | ||
+ | sleep 2 | ||
+ | log "add routes to new ssh tunnel" | ||
+ | bash $(dirname " | ||
+ | fi | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== MASQUERADE на целевом сервере ==== | ||
+ | |||
+ | Важное замечание: | ||
+ | <code bash> | ||
+ | |||
+ | / | ||
+ | |||
+ | net.ipv4.ip_forward=1 | ||
+ | |||
+ | |||
+ | iptables -t nat -A POSTROUTING -j MASQUERADE | ||
+ | </ |
wiki/iptables/tun0_to_tun2.1743682064.txt.gz · Последнее изменение: 2025/04/03 15:07 — Diman