The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Переброс соединений нв машину с нереальным IP через NAT в Linux (linux nat forward port iptables)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: linux, nat, forward, port, iptables,  (найти похожие документы)
From: Dmitry A. Koptev <dimez@nm.ru> Subject: Переброс соединений нв машину с нереальным IP через NAT в Linux ДАНО: Локальная сеть, роутер с 2-мя сетевыми карточками(под управлением Linux), в одну карточку включен шнур, по которому идёт интернет :-) Из роутера идёт второй шнур, который раздаёт этот интернет всей локалке. НАДО: "Пробросить" порт(либо вообще "выкинуть" машину наружу) внутрь локалки, то-есть обеспечить доступ извне(из дикого интернета) к какой-то локальной машине РЕШЕНИЕ: Сразу скажу, что на ядрах 2.2.x это нормально не получается, только используя утилиты iproute2 Алексея Кузнецова(сам не пробовал, но, говорят, получается). Так что я рассматр иваю вариант kernel-2.4.x + iptables. Ставим ЯДРО (посвежее http://www.kernel.org/pub/linux/kernel/), в ядре включаем всё, что касаемо iptables, ставим IPTABLES ( http://www.netfilter.org/ ) (если ещё не поставлены, кстати, рекомендую ставить тоже самые свежие) Обозначения $EXT_R_IP - внешний IP роутера $LOCAL_IP - внутренний "фэйковый" адрес машины, которую надо "выкидывать" наружу $PORT1 - Порт, на который будут заходить извне и попадать на локальную машину $PORT2 - Порт, который "выбрасывается" наружу(например, 80 - http, либо 21 - ftp) На роутере говорим следующие команды(от рута) # iptables -t nat -A PREROUTING -p tcp -d $EXT_R_IP --dport $PORT1 -j DNAT --to-destination $LOCAL_IP:$PORT2 # iptables -A FORWARD -i eth0 -d $LOCAL_IP -p tcp --dport $PORT2 -j ACCEPT Вуаля! Машина видна снаружи! !!!БОЛЬШОЕ ПРЕДУПРЕЖДЕНИЕ!!! Прежде чем "выкидывать" порт наружу - имеет смысл поставить на эту машину firewall, либо поставить новую версию программы(web-сервер или прочее), которую случайно не поломают. Вариант #2 - требуется вообще "выкинуть" машину наружу, но административными мерами (то есть, не трогая самой машины) Тут ЕЩЁ БОЛЬШЕЕ ПРЕДУПРЕЖДЕНИЕ!!! Это гораздо опаснее, чем обычный "проброс" порта - так что ставить нормальный firewall просто необходимость, а не прихоть!!! Обозначения 1) $DEV - внешний сетевой интерфейс на роутере(например, eth0) 2) $NEW_IP - новый IP, на который будем "сажать" "выведенную" машину из локалки (не может же она жить без IP :) (Если провайдер дал Вам больше одного внешнего IP-адреса) 3) $BC,$NM,$GW - соответственно, broadcast,netmask,gateway, который выдаёт провайдер(в общих чертах) 4) $LOCAL_IP - тоже самое, что и вверху Сначала надо сделать alias(у нас же нет третьей сетевой карточки) сетевого интерфейса (все команды - от рута, естественно) # ifconfig $DEV:0 $NEW_IP netmask $NM broadcast $BC # route add $NEW_IP gw $GW netmask 0.0.0.0 metric 1 dev $DEV:0 # iptables -t nat -A PREROUTING -p tcp -d $NEW_IP -j DNAT --to-destination $LOCAL_IP # iptables -A FORWARD -i eth0 -d $LOCAL_IP -j ACCEPT Всё! Теперь нашу локальную машину могут ломать хакеры всего интернета!! :) P.S. Все дополнения, исправления, пожелания, деньги и ценные вещи приветствуются :) © 2003 Dmitry A. Koptev <dimez@nm.ru>

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, Artur (?), 10:41, 30/04/2003 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    У меня ядро 2.2 и надо вытащить веб из локалки в инет, да еще имется только один адрес от провайдера. И как это сделать с iproute2, помогите, стоит ipchains с NAT-ом?
     
     
  • 2.6, Adekamer (?), 17:37, 09/07/2003 [^] [^^] [^^^] [ответить]  
  • +/
    >У меня ядро 2.2 и надо вытащить веб из локалки в инет,
    >да еще имется только один адрес от провайдера. И как это
    >сделать с iproute2, помогите, стоит ipchains с NAT-ом?
    А если у тебя кернел 2.2.х то тебе вообще все легко..ставь ipwadm


     

  • 1.2, Denis (?), 01:32, 06/05/2003 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А эти команды будут запускатся сразу или их нужно в каком то файле прописать? И как запустить NAT при загрузке системы?
     
     
  • 2.9, pro (?), 03:30, 08/12/2003 [^] [^^] [^^^] [ответить]  
  • +/
    >А эти команды будут запускатся сразу или их нужно в каком то
    >файле прописать? И как запустить NAT при загрузке системы?

    Он сам запускается.. Для верности можешь прописать автопуск iptables.
    Хотя это не выход, мне это не разу не понадобилось!

    Для того, чтобы эти правила запускались автоматически, при каждой загрузке системы, нужно прописать их в /etc/init.d/rc.d

     

  • 1.3, Cvant (?), 10:10, 15/05/2003 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    У меня пробла порт 7000 и 9000 нехотять работат!!!Помоги!!!!Фаирвол блокирует эти порты!!!Как это устранить или как обойти?:))))Плиззз
     
     
  • 2.4, akeeper (?), 15:14, 15/05/2003 [^] [^^] [^^^] [ответить]  
  • +/
    И как же это относится к обсуждению статьи-то? Господа, вопросы надо было в форуме задавать, быстрее бы ответы получили :))

    wbr, akeeper.

     

  • 1.5, mentatxx (?), 11:39, 21/06/2003 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Интересно б услышать как это сделать во FreeBSD ?
    IPFW fwd ?
     
     
  • 2.7, Alen (?), 20:08, 08/10/2003 [^] [^^] [^^^] [ответить]  
  • +/
    На машине стоит RH9, 3 сетевых карты eth2 - от провайдера, eth0 и eth1 смотрит в локальную сеть. Если приходит запрос с интернета то задействован eth0, если локальная сеть провайдера(гор.сеть), то eth1.
    Это все работает, а проблема заключается в следующем: Любой пользователь, находящийся вне моей лок сети, но внутри гор.сети провайдера может пропиать в качестве шлюза мою машину с линуксом и ходить в интернет за мой счет =(
    Кто-то подсказал, что необходимо в forwarde поставить ограничение на прохождение пакетов, но я не могу понять как это сделать... Сейчас стоит следующее условие: если dest 10.0.0.0/8 (гор.сеть) и вход eth1 и выход eth2 тогда разрешать, и второе условие: если вход eth1 и выход eth2 - блокировать. Пробовал в первое условие дописать - если sorc 10.100.0.0/24(моя лок. сеть)... но ничего не выходит...
    Помогите пожалуйста...[][]

     
  • 2.8, pro (?), 03:28, 08/12/2003 [^] [^^] [^^^] [ответить]  
  • +/
    Никак, наверно. Хотя я что-то слышал про natd.
     

  • 1.10, Вит (?), 05:53, 10/12/2003 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Подскажите please,
    с какими версиями iptables
    это _должно_ работать?
    у меня что-то на 1.2.1 не пашет
     
  • 1.11, artemsh (??), 13:21, 28/05/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А почему используется именно DNAT нельзя ли использовать SNAT?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру