Пятница, 26.04.2024, 13:54
# FreeBSD ГлавнаяРегистрацияВход
Приветствую Вас Гость | RSS
Меню сайта
Категории раздела
Мои статьи [167]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
 Каталог статей 
Главная » Статьи » Мои статьи

Маршрутизация проброс портов Linux Ubuntu Server
Правила маршрутизации определяют, куда отправлять IP-пакеты. Данные
  маршрутизации хранятся в одной из таблиц ядра. Вести таблицы
  маршрутизации можно статически или динамически. Статический маршрут --
  это маршрут, который задается явно с помощью команды route.
  Динамическая маршрутизация выполняется процессом-демоном (routed или
  gated), который ведет и модифицирует таблицу маршрутизации на основе
  сообщений от других компьютеров сети. Для выполнения динамической
  маршрутизации разработаны специальные протоколы: RIP, OSPF, IGRP, EGP,
  BGP и т. д.

  Динамическая маршрутизация необходима в том случае, если у вас
  сложная, постоянно меняющаяся структура сети и одна и та же машина
  может быть доступна по различным интерфейсам (например, через разные
  Ethernet или SLIP интерфейсы). Маршруты, заданные статически, обычно
  не меняются, даже если используется динамическая маршрутизация.
  Для персонального компьютера, подключаемого к локальной сети, в
  большинстве ситуаций бывает достаточно статической маршрутизации
  командой route. Прежде чем пытаться настраивать маршруты, просмотрите
  таблицу маршрутизации ядра с помощью команды netstat -n -r. Вы должны
  увидеть что-то вроде следующего

  rigon@ubuntu-comp:~$ netstat -n -r

  Destination Gateway Genmask Flags MSS Window irtt Iface
  192.168.254.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
  192.168.254.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
  169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
  0.0.0.0 192.168.254.1 0.0.0.0 UG 0 0 0 eth0
  0.0.0.0 192.168.254.1 0.0.0.0 UG 0 0 0 eth1


  Если таблица пуста, то вы увидите только заголовки столбцов. Тогда
  надо использовать route. С помощью команды route можно добавить или
  удалить один (за один раз) статический маршрут. Вот ее формат:

  route -f операция -тип адресат шлюз интерфейс


  Здесь аргумент операция может принимать одно из двух значений: add
  (маршрут добавляется) или delete (маршрут удаляется). Аргумент адресат
  может быть IP-адресом машины, IP-адресом сети или ключевым словом
  default . Аргумент шлюз -- это IP-адрес компьютера, на который
  следует пересылать пакет (этот компьютер должен иметь прямую связь с
  вашим компьютером). Команда

  route -f


  удаляет из таблицы данные обо всех шлюзах. Необязательный аргумент тип
  принимает значения net или host . В первом случае в поле адресата
  указывается адрес сети, а во втором -- адрес конкретного компьютера
  (хоста).

  Как правило, бывает необходимо настроить маршрутизацию по
  упоминавшимся выше трем интерфейсам:
  * локальный интерфейс (lo),
  * интерфейс для платы Ethetnet (eth0),
  * интерфейс для последовательного порта (PPP или SLIP).

  Локальный интерфейс поддерживает сеть с IP-номером 127.0.0.1. Поэтому
  для маршрутизации пакетов с адресом 127.... используется команда:

  route add -net 127.0.0.1 lo


  Если у вас для связи с локальной сетью используется одна плата
  Ethernet, и все машины находятся в этой сети (сетевая маска
  255.255.255.0), то для настройки маршрутизации достаточно вызвать:

  route add -net 192.168.36.0 netmask 255.255.255.0 eth0


  Если же вы имеете насколько интерфейсов, то вам надо определиться с
  сетевой маской и вызвать команду route для каждого интерфейса.
  Поскольку очень часто IP-пакеты с вашего компьютера могут отправляться
  не в одну единственную сеть, а в разные сети (например, при просмотре
  разных сайтов в Интернете), то в принципе надо было бы задать очень
  много маршрутов. Очевидно, что сделать это было бы очень сложно,
  точнее просто невозможно. Поэтому решение проблемы маршрутизации
  пакетов перекладывают на плечи специальных компьютеров --
  маршрутизаторов, а на обычных компьютерах задают маршрут по умолчанию,
  который используется для отправки всех пакетов, не указанных явно в
  таблице маршрутизации. С помощью маршрута по умолчанию вы говорите
  ядру "а все остальное отправляй туда". Маршрут по умолчанию
  настраивается следующей командой:

  route add default gw 192.168.1.1 eth0


  Опция gw указывает программе route, что следующий аргумент - это
  IP-адрес или имя маршрутизатора, на который надо отправлять все
  пакеты, соответствующие этой строке таблицы маршрутизации.
  Вот немного теории с сайта linuxcenter.ru

  А теперь пример из жизни
  Имеются следующие интерфейсы /etc/network/interfaces

  auto lo
  iface lo inet loopback
  auto eth0
  iface eth0 inet static
  address 192.168.17.8
  hwaddress ether 00:E0:4C:A2:C4:48
  netmask 255.255.255.0
  broadcast 192.168.17.255
  auto eth1
  iface eth1 inet static
  address 192.168.254.2
  netmask 255.255.255.0
  gateway 192.168.254.1
  broadcast 192.168.254.255


  Интерфейс eth0 это связь с локальной сетью состоящей из 20 подсетей
  192.168.1.х-192.168.20.х

  Интерфейс eth1 это связь с ADSL модемом с выходом в интернет. Так
  большинство запросов идут в Инет на этом интерфейсе прописываем шлюз
  (gateway 192.168.254.1) данный параметр указывает в системе шлюз
  по-умолчанию, обращаю внимание, что шлюз надо прописывать только на
  одном интерфейсе, иначе в системе появятся 2 маршрута по умолчанию и
  естно будет затупление в работе. С интернетом разобрались.

  Но требуется еще просматривать ресурсы локальной сети
  для этого надо выполнить вот эти команды

  route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
  route add -net 192.168.12.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
  route add -net 192.168.21.0 netmask 255.255.255.0 gw 192.168.17.254 eth0


  На этом примере маршрутизируются 3 подсети

  Все эти команды и многие другие можно прописать в файлк
  /etc/network/interfaces в итоге получится следующее:

  auto lo
  iface lo inet loopback
  auto eth0
  iface eth0 inet static
  address 192.168.17.8
  hwaddress ether 00:E0:4C:A2:C4:48
  netmask 255.255.255.0
  broadcast 192.168.17.255
  up route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
  up route add -net 192.168.12.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
  up route add -net 192.168.21.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
  auto eth1
  iface eth1 inet static
  address 192.168.254.2
  netmask 255.255.255.0
  gateway 192.168.254.1
  broadcast 192.168.254.255


  Ну вот и все по аналогии настраиваются любое кол-во маршрутов и
  сетевых интерфейсов

Дополнение 1.

  Обратите внимание

  hwaddress ether 00:E0:4C:A2:C4:48


  так легко можно изменить MAC, не забываем после редактирования файла
  делать рестарт

  sudo /etc/init.d/networking restart


Дополнение 2.

  Следует отметить, что:
  1) Для того, чтобы просмотреть таблицу маршрутов достаточно запуска
  команды route без параметров или route -n, если в сети нет DNS.
  2) Маска может быть записана проще, в виде /x, где x - число единичных
  битов, например:

  route add -net 192.168.36.0/24 eth0


  вместо

  route add -net 192.168.36.0 netmask 255.255.255.0 eth0


  Настройки сети размещаются в файле /etc/network/interfaces
  При подключение к Inet через VPN (ppp0...), необходимо заменять
  маршрут по умолчанию на ppp0.

  А проще указать в файле /etc/ppp/options следующее:

  defaultroute
  replacedefaultroute


  тогда маршрут заменяется сам и при отключении восстанавливается.

Дополнение 3.

  Есть прога, серверная часть которой стоит во внутренней сети, например
  Radmin Server, чтобы к нему подключиться клиентская прога (Radmin
  Viewer) запрашивает соединение по порту 4799 (например). Все работает
  внутри локальной сети. Есть шлюз (с внешним IP), через который
  обеспечивает доступ в и-нет всех компов внутренней сети. Теперь
  вопрос, как настроить шлюз, чтобы при обращении из вне клиентсокой
  частью к IP шлюза по порту 4799, он пробрасывал этот запрос дальше,
  например на 192.168.0.2 по томуже порту?

  Для этого есть команда iptables:

  iptables -t nat -D PREROUTING -i <интерфейс> -s <IP откуда будет коннект> 
  -p tcp --dport 4899 -j DNAT --to-destination 192.168.0.2:4899
   
   
  Если ограничивать входящие IP не требуется, то опцию -s можно
  опустить.
  Пример:

  iptables -t nat -A PREROUTING -i vlan1 -s 213.87.34.20/24 -p tcp
  --dport 4899 -j DNAT --to-destination 192.168.128.24:4899

  iptables -t nat -A PREROUTING -i eth0 -p udp --dport 3658 -j DNAT
  --to-destination 192.168.0.2:3658

Категория: Мои статьи | Добавил: Admin (21.10.2011)
Просмотров: 6422 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Copyright MyCorp © 2024Сделать бесплатный сайт с uCoz