Статистика

Участников проекта 105
Опубликовано статей 78
Отчет по карме. Топ 20

Новости блога

1 29.11.2013  Сегодня самым активным участникам newblog'а был выплачен доход с sape.
7 02.11.2012  Ура! Свешилось, нашему сайту дали тИЦ 10. Спасибо всем кто принимает участие в развитии нашего блога.
8 21.08.2012  Интеграция с sape.ru. Теперь каждый автор статей на newblog автоматически зарабатывает на рекламе.
Все новости

Топ 5 категорий

Программирование 46
Операционные системы 9
Базы данных 4
Туризм 2
Заметки 2

Последние 5 заметок (90)

gullyar - Закладки gullyar
gullyar - Ваша первая закладка
osadchaya - Закладки osadchaya
Ira0231188 - Закладки Ira0231188
Ira0231188 - Закладки Ira0231188

Ссылки

www.freedev.asia

Организация туннеля в linux с помощью iptables и ssh

14.12.2011 20:48 | Просмотров: 3880 | Доход: 83.68 руб. | Комментариев: 11
[Операционные системы] 
Рейтинг: 5/1

В linux достаточно много способов пробросить порты, в последнее время я пользуюсь двумя самыми удобными на мой взгляд. Например, простая ситуация: Вам необходимо попасть на машину, которая находится в локальной сети (машина #1), но в инет смотрит только машина #2. В свою очередь, машина #2 видит машину #1. Для быстрого создания туннеля достаточно выполнить на своей машине команду:

ssh -L[порт который увидим на localhost]:[ip машины #1]:[Порт на машине #1] [Пользователь на машине #2]@[ip машины #2] -p [порт ssh на машине #2]

Чтобы отключить это "безобразие" просто выполните exit. Существует еще один подход для решения данной задачи. Если данный туннель нужно прокинуть "надолго", то лучше всего воспользоваться iptables, который есть практически в каждом linux. Необходимо написать следующий скрипт:

#!/bin/bash
IPATH="/sbin/iptables"
GW="[ip машины #2]"
SERVER_IP="[ip машины #1(которую хотим пробросить)]"
 PORT=[порт, который пробрасываем] 
echo 1 > /proc/sys/net/ipv4/ip_forward
$IPATH -t nat -A PREROUTING -p tcp --dst $GW --dport $PORT -j DNAT --to-destination $SERVER_IP:$PORT
$IPATH -t nat -I POSTROUTING -p tcp --dst $SERVER_IP --dport $PORT -j SNAT --to $GW /etc/init.d/iptables save /etc/init.d/iptables start
 
Эти правила можно будет отключить по номеру, предварительно узнав номер правила в iptables-save:
 
iptables -t nat -D POSTROUTING 1
iptables -t nat -D PREROUTING 1

 

 


© GM
| Комментировать статью |
  • Аноним 0 (18.12.2011 01:57)
    шо? серваки сложновато стало админить из дома? :)
    | Ответить |
    • GM +2587 (18.12.2011 11:07)
      С удовольствием послушал бы Ваш вариант решения данной задачи :)
      | Ответить |
    • GM +2587 (18.12.2011 11:12)
      P.S.: WTP, ты?? :)
      | Ответить |
      • Аноним 0 (18.12.2011 13:22)
        не угадал
        | Ответить |
        • GM +2587 (18.12.2011 15:29)
          хватит шифроваться, давай регайся :P
          | Ответить |
  • WTP +711 (12.01.2012 11:37)
    У меня есть вопрос по приведенному скрипту.
    Если я правильно представляю себе схему - скриптом настраивается машина №2 чтобы она смогла перенаправлять пакеты на машину №1, которые идут от моей машины (пусть будет №3). Соответственно запускать скрипт надо на машине №2. Но тогда зачем в нем айпишник машины №2? Не логичней было бы использовать айпишник моей машины №3? Или я чето не понимаю?
    | Ответить |
    • GM +2587 (12.01.2012 11:46)
      В скрипте все верно, там указывается ip шлюза, а именно машины номер 3. Запрос будет перенаправляться не только с машины номер 3, а с любой обращающейся по указанным правилам.
      | Ответить |
      • GM +2587 (12.01.2012 11:48)
        Очепятался.. *машины номер 3 :) В GW указывается ip той машины на которой запускается скрипт и которая будет играть роль шлюза.
        | Ответить |
      • WTP +711 (12.01.2012 11:52)
        Машина №3 - это НЕ шлюз. Шлюз - машина №2, так? Зачем в правилах iptables на машине №2 указывать ее же собственный айпишник?
        | Ответить |
        • GM +2587 (12.01.2012 11:58)
          У машины №2 может быть несколько интерфейсов и ip. В том числе каждый реальный ip может натится в разные сети.
          | Ответить |
          • WTP +711 (12.01.2012 12:00)
            Да, не подумал. Вопрос снят.
            | Ответить |