Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Ubuntu server 10.10 amd64 проблемы с маршрутизацией NAT с DHCP  (Прочитано 2461 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ZolteR

  • Автор темы
  • Новичок
  • *
  • Сообщений: 39
    • Просмотр профиля
Я новичок в LINUX, поэтому пришлось много почитать чтобы настроить то что надо, но даже после этого есть проблемы.
Есть сервер с двумя сетевыми интерфейсами. HP ProLiant ML110 (добавлена карта RTL8139)
Задача: настроить DHCP в подсети 192.168.66.0, настроить маршрутизацию NAT таким образом чтобы в инет ч/з сервер могли выходить только зарезервированные IP адреса выдаваемые DHCP по MAC адресу клиента. Для этого всем клиентам DHCP передает неправильный шлюз и DNS и только зарезервированным передает все настройки правильные. NAT так и не получилось настроить на маршрутизацию только определенных IP адресов.
После настройки все заработало, только появилась огромная проблема если клиенты ерзают по страничкам все ок, но стоит им зайти на сайт типа youtube.com и начать загрузку видео сервер виснет и выбрасывает кучу ошибок.
Скрин:
Вот настройки (ставился Ubuntu Server 10.10 amd64 на RAID1 c ролями /LAMP/SSH/SAMBA):
--------------------------------------------------
# НАСТРАИВАЕМ СЕТЬ
--------------------------------------------------
$ sudo nano /etc/network/interfaces
   # LOOPBACK
   auto lo
   iface lo inet loopback

   # ADSL
   auto eth0
   iface eth0 inet static
      address 192.168.1.2
      netmask 255.255.255.0
      gateway 192.168.1.1

   # LAN
   auto eth1
   iface eth1 inet static
      address 192.168.66.1
      netmask 255.255.255.0
      # network 192.168.66.0
      # broadcast 192.168.66.255
      # gateway xxx.xxx.xxx.xxx
      # dns-nameservers xxx.xxx.xxx.xxx
      # dns-search myhost.com

$ sudo nano /etc/resolv.conf
   # Список DNS серверов провайдера
   nameserver 192.168.1.1
   nameserver212.154.163.162
--------------------------------------------------
# УСТАНАВЛИВАЕМ НУЖНЫЕ ПАКЕТЫ
--------------------------------------------------
$ sudo apt-get update
$ sudo apt-get install mc
$ sudo apt-get install dhcp3-server
$ sudo apt-get install dnsmasq


--------------------------------------------------
# НАСТРАИВАЕМ DHCP
--------------------------------------------------
$ sudo nano /etc/default/dhcp3-server
   # Интерфейс для раздачи IP адресов
   INTERFACES="eth1"

$ sudo nano /etc/dhcp3/dhcpd.conf
   # Отдать адрес серверу ч/з 604800 сек.
   default-lease-time 604800;
   # Забрать адрес у клиента ч/з 864001 сек.
   max-lease-time 864001;
   
   # Параметры для раздачи с DHCP
   subnet 192.168.66.0 netmask 255.255.255.0 {
   range 192.168.66.41 192.168.66.254;
   option routers 192.168.66.2;
   option domain-name-servers 192.168.66.3;
   # option subnet-mask xxx.xxx.xxx.xxx;
        # option broadcast-address xxx.xxx.xxx.xxx;
   # option netbios-name-servers xxx.xxx.xxx.xxx;
   # option domain-name "myhost.com";
   }
   
   # Привязка по MAC адресам
   host media1 {
   hardware ethernet 88:AE:1D:F5:6A:1E;
   fixed-address 192.168.66.5;
   option routers 192.168.66.1;
   option domain-name-servers 192.168.66.1;
   }

--------------------------------------------------
# НАСТРАИВАЕМ СЕРВЕР СЛУШАТЬ
--------------------------------------------------
$ sudo nano /etc/dnsmasq
   listen-address=127.0.0.1, 192.168.66.1

--------------------------------------------------
# НАСТРАИВАЕМ NAT
--------------------------------------------------
$ sudo nano /etc/sysctl.conf
   # Разрешить форвардинг
   net.ipv4.ip_forward=1

$ sudo touch /etc/nat

$ sudo chmod +x /etc/nat

$ sudo nano /etc/nat
   #!/bin/sh

   # Включаем форвардинг пакетов
   echo 1 > /proc/sys/net/ipv4/ip_forward

   # Разрешаем трафик на loopback-интерфейсе
   iptables -A INPUT -i lo -j ACCEPT

   # Разрешаем доступ из внутренней сети наружу
   iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

   # Включаем NAT
   iptables -t nat -A POSTROUTING -o eth0 -s 192.168.66.0/24 -j MASQUERADE

   # Запрещаем доступ снаружи во внутреннюю сеть
   iptables -A FORWARD -i eth0 -o eth0 -j REJECT

$ sudo nano /etc/network/interfaces
   # Запускаем NAT (добавить в конце файла)
   post-up /etc/nat

--------------------------------------------------
# ВСЕ
--------------------------------------------------
$ sudo reboot

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Для этого всем клиентам DHCP передает неправильный шлюз и DNS и только зарезервированным передает все настройки правильные.
Не правильный подход. ИМХО

NAT так и не получилось настроить на маршрутизацию только определенных IP адресов.
Один из вариантов: пропускать в интернет только правильных клиентов
Выделяем для обычных пользователей пул адресов что-нибудь типа 192.168.66.16-192.168.66.254, а правильным даём адреса 192.168.66.2-192.168.66.15
iptables -P FORWARD DROP
iptables -A FORWARD -s 192.168.66.0/28 -o eth0 -j ACCEPT
В итоге до интенета допускаются только адреса 192.168.66.1-192.168.66.15. Можно и  модуль iprange заюзать

iptables -A FORWARD --src-range 192.168.66.1-192.168.66.56 -o eth0 -j ACCEPT

Гарри Кашпировский

  • Гость
Это всё хорошо, но скрин очень напоминает kernel panic.

Оффлайн censor

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
еще более правильным вариантом будет выпускать в инет по mac адресу клиента.
правило будет выглядеть примерно так
iptables -t nat -A POSTROUTING -m mac --mac-source XX:XX:XX:XX:XX:XX -s 192.168.66.0/24 -o eth0 -j SNAT --to-source WAN_IP
или
iptables -t nat -A POSTROUTING -m mac --mac-source XX:XX:XX:XX:XX:XX -s 192.168.66.0/24 -o eth0 -j MASQUERADE

Оффлайн ZolteR

  • Автор темы
  • Новичок
  • *
  • Сообщений: 39
    • Просмотр профиля
Для этого всем клиентам DHCP передает неправильный шлюз и DNS и только зарезервированным передает все настройки правильные.
Не правильный подход. ИМХО

NAT так и не получилось настроить на маршрутизацию только определенных IP адресов.
Один из вариантов: пропускать в интернет только правильных клиентов
Выделяем для обычных пользователей пул адресов что-нибудь типа 192.168.66.16-192.168.66.254, а правильным даём адреса 192.168.66.2-192.168.66.15
iptables -P FORWARD DROP
iptables -A FORWARD -s 192.168.66.0/28 -o eth0 -j ACCEPT
В итоге до интенета допускаются только адреса 192.168.66.1-192.168.66.15. Можно и  модуль iprange заюзать

iptables -A FORWARD --src-range 192.168.66.1-192.168.66.56 -o eth0 -j ACCEPT

Огромное спасибо, намек понят, единственное не понимаю записи 0/24 или 0/28 ult yfqnb ghj 'nj xnj-yb,elm
я так понимаю что 192.168.66.0/24 пускает всех а 192.168.66.0/28 только тех кто в DHCP


Оффлайн ZolteR

  • Автор темы
  • Новичок
  • *
  • Сообщений: 39
    • Просмотр профиля
http://ru.wikipedia.org/wiki/%D0%91%D0%B5%D1%81%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%BE%D0%B2%D0%B0%D1%8F_%D0%B0%D0%B4%D1%80%D0%B5%D1%81%D0%B0%D1%86%D0%B8%D1%8F
Спасибо очень интересная инфа, но
iptables -t nat -A POSTROUTING -m mac --mac-source XX:XX:XX:XX:XX:XX -s 192.168.66.0/24 -o eth0 -j MASQUERADE
не работает пишет:
[296.111613] x_tables: ip_tables:mac match: used from hooks POSTROUTING? but only valid from PREROUTING/INPUT/FORWARD
iptables: invalid argument

Пользователь решил продолжить мысль 12 Марта 2011, 21:33:14:
Все отлично, но вопрос с черным экраном и непонятными записями остается открытым так же как и фильтрация адресов в NAT, потому что по mac не хочет и по области
iptables -A POSTROUTING -t nat -s 192.168.66.2-192.168.66.10 -o eth0 -j MASQUERADE тоже не хочет
« Последнее редактирование: 12 Марта 2011, 21:33:14 от ZolteR »

Оффлайн censor

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
да, соврал, фильтрация по mac производится в таблице filter в то время как в nat маскируются все пакеты из заданной сети
iptables -t filter -A FORWARD -m mac --mac-source XX:XX:XX:XX:XX:XX -i eth1 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.66.0/24 -o eth0 -j MASQUERADE
вот так будет правильно.

ЗЫ политика для FORWARD должна выставляться в DROP
iptables -t filter -P FORWARD DROP
« Последнее редактирование: 12 Марта 2011, 21:47:17 от censor »

Гарри Кашпировский

  • Гость
Спасибо очень интересная инфа, но
iptables -t nat -A POSTROUTING -m mac --mac-source XX:XX:XX:XX:XX:XX -s 192.168.66.0/24 -o eth0 -j MASQUERADE
не работает пишет:
[296.111613] x_tables: ip_tables:mac match: used from hooks POSTROUTING? but only valid from PREROUTING/INPUT/FORWARD
iptables: invalid argument
Ага поэтому
iptables -A FORWARD -m mac --mac-source XX:XX:XX:XX:XX:XX -s 192.168.66.0/24 -j ACCEPT
iptables -A FORWARD -j DROP
или в цепочке INPUT
iptables -A POSTROUTING -t nat -s 192.168.66.2-192.168.66.10 -o eth0 -j MASQUERADE тоже не хочет
Цитировать
iptables -A POSTROUTING -t nat --src-range 192.168.66.2-192.168.66.10 -o eth0 -j MASQUERADE
И вообще порнография с ADSL мне непонятна, модем в мост и с сервера поднимать соединения, не?

Оффлайн ZolteR

  • Автор темы
  • Новичок
  • *
  • Сообщений: 39
    • Просмотр профиля
С фильтрацией NAT по первым IP разобрался: бесскласовая адресация действительно помогает.
Но что делать с фильтрацией по MAC и с черным экраном остается загадкой?

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Вам предложили 2 варианта фильтрации: по IP или по MAC, потому не обязательно использовать оба типа. Какой из них выбрать - Вам решать. MAC-защита, конечно, соглашусь, понадёжней.
Кстати, не обязательно по первым IP, можно и не первые, например если выбрать
--src-range 192.168.66.22-192.168.66.29или
-s 192.168.66.64/27

Оффлайн ZolteR

  • Автор темы
  • Новичок
  • *
  • Сообщений: 39
    • Просмотр профиля
Вам предложили 2 варианта фильтрации: по IP или по MAC, потому не обязательно использовать оба типа. Какой из них выбрать - Вам решать. MAC-защита, конечно, соглашусь, понадёжней.
Кстати, не обязательно по первым IP, можно и не первые, например если выбрать
--src-range 192.168.66.22-192.168.66.29или
-s 192.168.66.64/27
спасибо за уточнение, я так понимаю 64/27 будут взяты адреса с 64 по 95

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Совершенно верно

Оффлайн censor

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
установите ipcalc будет проще рассчитывать маски.

Пользователь решил продолжить мысль 12 Марта 2011, 23:02:56:
Вам предложили 2 варианта фильтрации: по IP или по MAC, потому не обязательно использовать оба типа. Какой из них выбрать - Вам решать. MAC-защита, конечно, соглашусь, понадёжней.
маки не то что надежней, просто удобней, клиент может арендовать любой адрес при этом не теряя доступ в интернет.
« Последнее редактирование: 12 Марта 2011, 23:02:56 от censor »

Оффлайн ZolteR

  • Автор темы
  • Новичок
  • *
  • Сообщений: 39
    • Просмотр профиля
Согласен, но ни один из предложенных вариантов для МАС фильтрации не действует

iptables -t filter -P FORWARD DROP
iptables -t filter -A FORWARD -m mac --mac-source XX:XX:XX:XX:XX:XX -i eth1 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.66.0/24 -o eth0 -j MASQUERADE

iptables -A FORWARD -m mac --mac-source XX:XX:XX:XX:XX:XX -s 192.168.66.0/24 -j ACCEPT
iptables -A FORWARD -j DROP
iptables -t nat -A POSTROUTING -j MASQUERADE


Пользователь решил продолжить мысль 12 Марта 2011, 23:13:09:
А самое главное, что даже без всяких ограничений инет клиентам раздается недолго, до появления черного экрана с какими-то ошибками, есть вроде что-то про панику ядра, но оно только похоже, у меня есть мнение что это из-за дополнительной сетевой карты (PCI-слот) которая подключена к LAN, или из-за какого-то специфического трафика с которым не может справиться система.
« Последнее редактирование: 12 Марта 2011, 23:13:09 от ZolteR »

 

Страница сгенерирована за 0.042 секунд. Запросов: 24.