The OpenNET Project / Index page

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

Интернет шлюз на FreeBSD (freebsd route ipfw nat squid proxy)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: freebsd, route, ipfw, nat, squid, proxy,  (найти похожие документы)
From: Alchemist <lipovetskiy@yandex.ru.> Newsgroups: email Date: Mon, 24 Jul 2008 14:31:37 +0000 (UTC) Subject: Интернет шлюз на FreeBSD Построение шлюза в глобальную сеть на FreeBSD - это один из самых частых случаев использования этой системы. Основные плюсы данного решения это: стабильность, масштабируемость, устойчивость к высоким нагрузкам и естественно бесплатность всего используемого ПО. В этой заметке я опишу свой опыт развертывания Интернет-шлюза на FreeBSD 7.0 RELEASE amd64 с использованием межсетевого экрана IPFW, демона трансляции сетевых адресов natd и прокси-сервер squid. Начнем с установки IPFW. Для этого нужно пересобрать ядро с поддержкой нескольких функций. Заходим в директорию соответствующую архитектуре нашего процессора и делаем копию дефолтного ядра в ROUTER: # cd /usr/src/sys/amd64/conf # cp GENERIC ROUTER Редактируем наше новое ядро и добавляем новые функции: cpu HAMMER ident ROUTER makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols options IPFIREWALL # собственно файрволл options IPFIREWALL_VERBOSE # логгинг пакетов, если в правиле написано log options IPFIREWALL_VERBOSE_LIMIT=100 # ограничение логов (повторяющихся) options IPFIREWALL_DEFAULT_TO_ACCEPT # дефолтное правило - разрешающее options IPDIVERT # необходимо для NAT options IPFIREWALL_FORWARD # перенаправление пакетов options DUMMYNET # ограничение скорости Собираем и устанавливаем ядро: # cd /usr/src # make buildkernel KERNCONF=ROUTER # make installkernel KERNCONF=ROUTER Добавляем в rc.conf строки: firewall_enable="YES" firewall_type="open" firewall_logging="YES" natd_enable="YES" natd_interface="rl0"; Перезагружаемся. Если все нормально, то в итоге у нас должен получиться открытый фаервол с NAT. Пока оставим как есть. Следущим этапом у нас будет установка прокси-сервера. # cd /usr/ports/www/squid # make install clean # rehash Дальше редактируем конфигурационный файл сквида. У меня сейчас небольшая офисная сеть без домена, поэтому с авторизацией не занимался - все ограничения идут по ip: /usr/local/etc/squid/squid.conf # порт который слушаем http_port 3128 # порт прозрачного прокси http_port 3129 transparent # список слов, которые будучи обнаруженными в URL # вызывают обработку без кэширования hierarchy_stoplist cgi-bin ? # список ACL которые вызывают несовпадение с кэшем, # и, запрос с ответом кэшироваться не будут acl QUERY urlpath_regex cgi-bin \? # собственно - правило что не кэшируем no_cache deny QUERY # сколько отдаём ему памяти cache_mem 256 MB # Директория для кэша, числа - размер кэша в Mb, # число директорий первого уровня, число директорий второго # уровня в каждой директории первого. cache_dir ufs /usr/local/squid/cache 50000 64 512 # лог доступа - первый параметр путь, второй - формат # форматы описаны в дефолтовом файле. access_log /var/log/squid/access.log # лог активности менеджера хранилища. Показывает, какие # объекты были сохранениы/удалены из кэша и как долго. # мне он не нужен, а места занимает прилично. cache_store_log none # файл hosts, проверяемый при запуске. Из него берётся # доменное имя и добавляется к неполным адресам (которые # не содержат ни одной точки в имени) hosts_file /etc/hosts # директория где хранятся HTML c текстами ошибок error_directory /usr/local/etc/squid/errors/Russian-1251 cache_log /var/log/squid/cache.log #debug_options ALL,5 pid_filename /var/log/squid/squid.pid # порты на которе можно ходить пользователям acl safe_ports port 80 # http acl safe_ports port 21 # ftp acl safe_ports port 443 # ssl acl icq_ports port 5190 # ICQ # пользователи у которых просто интернет - с ограничениями acl inet_users src "/usr/local/etc/squid/inet_users" # пользователи с полными парвами на доступ в инет acl inet_full src "/usr/local/etc/squid/inet_full" # Описываем все сети все IP acl all src 0.0.0.0/0.0.0.0 # описываем локалхост acl localhost src 127.0.0.1/255.255.255.255 # запрещённые в URL выражения (для всего УРЛа) acl deny_url url_regex "/usr/local/etc/squid/deny_url" # запрещённые доменные имена acl deny_domains dstdomain "/usr/local/etc/squid/deny_domains" # пользователи с ограниченным доступом в интернет, только # определённый набор ресурсов и всё. acl inet_restrict src "/usr/local/etc/squid/inet_restrict" # список сайтов для тех у кого их определённый набор acl domains_for_restrict dstdomain "/usr/local/etc/squid/domains_for_restrict" # пользователи ICQ acl inet_icq src "/usr/local/etc/squid/inet_icq" # Разрешаем доступ ко всему группе inet_full http_access allow inet_full # Зарубаем запрещённые куски url, рубим рекламу если надо #http_access deny deny_url # Разрешаем асечный порт тем у кого есть аська http_access allow inet_icq icq_ports # зарубаем запрещённые домены http_access deny deny_domains # зарубаем все порты проме safe_ports http_access deny !safe_ports # разрешаем инет обычным пользователям http_access allow inet_users # разрешаем инет ограниченным пользователям на разрешённые сайты http_access allow inet_restrict domains_for_restrict # блокируем всё лишнее http_access deny all Вкратце по конфигу: слушаем как на стандартном порту, так и прикрутили прозрачный прокси; принимаем запросы http, https ftp, icq; распределение доступа производится на основе правил и файлов, в которых прописываются ip нужных компьютеров. Дальше создаем и заполняем содержимым все файлы, указанные в этом конфиге, делаем пользователя squid владельцем папки с кэшем, после чего создаем кэш и запускаем сквид: # chown -R squid:wheel /usr/local/squid # squid -z # /usr/local/etc/rc.d/squid start # ps -waux | grep squid squid 965 0,0 0,1 7688 2076 ?? Is 21:37 0:00,00 /usr/local/sbin/squid -D squid 967 0,0 1,0 28168 20008 ?? S 21:37 0:06,00 (squid) -D (squid) squid 1008 0,0 0,0 2532 844 ?? Is 21:37 0:00,00 (unlinkd) (unlinkd) root 7943 0,0 0,1 6928 1428 p0 S+ 16:02 0:00,00 grep squid Теперь опять вернемся к фаерволу. Он у нас есть, открытый - но толку-то от такого фаервола ? =) Создаем свой скрипт с правилами. У меня он выглядит так: #!/bin/sh # при работе по SSH, чтобы перечитать конфиг набирать nohup sh /etc/rules # Прежде, чем мы начнем, сбросим список ipfw -q -f flush # Установим префикс команды для набора правил cmd="ipfw -q add" skip="skipto 400" wanip="111.111.111.111" # внешний IP lannet="192.168.0.0/24" # внутренняя сеть eif="rl0" # внешний интерфейс # Нет запретов внутри интерфейса смотрящего в локальную сеть $cmd 010 allow all from any to any via re0 # Нет ограничений на Loopback интерфейсе $cmd 020 allow all from any to any via lo0 # Рубим попытки lo0 куда-то лезть и откуда-то лезть на lo0 $cmd 030 deny ip from any to 127.0.0.0/8 $cmd 040 deny ip from 127.0.0.0/8 to any # отправляем всех на прозрачный squid $cmd 050 fwd 127.0.0.1,3129 tcp from $lannet to any 21,80,443,5190 out via $eif # Входящий NAT $cmd 060 divert natd ip from any to any in via $eif # Позволяем пакету проходить, если предыдущий был добавлен в # "динамическую" таблицу правил с разрешением состояния keep-state $cmd 070 check-state ############## Outgoing ################ # Исходящий PING $cmd 100 $skip icmp from any to any keep-state # Исходящий NTP $cmd 105 $skip udp from any to any 123 out via $eif keep-state # Разрешаем DNS $cmd 110 $skip udp from any to any 53 out via $eif keep-state $cmd 111 $skip tcp from any to any 53 out via $eif setup keep-state # Выпускаем пользователей в обход сквида $cmd 140 $skip all from $lannet to any 4899 out via $eif setup keep-state $cmd 150 $skip all from $lannet to any 3389 out via $eif setup keep-state $cmd 160 $skip all from $lannet to any 25 out via $eif setup keep-state $cmd 170 $skip all from $lannet to any 110 out via $eif setup keep-state # Разрешаем полный выход с сервака $cmd 190 $skip all from $wanip to any out via $eif setup keep-state ############# Incoming ################ # Запрещаем весь входящий трафик из зарезервированных адресных пространств $cmd 200 deny all from 192.168.0.0/16 to any in via $eif #RFC 1918 private IP $cmd 201 deny all from 172.16.0.0/12 to any in via $eif #RFC 1918 private IP $cmd 202 deny all from 10.0.0.0/8 to any in via $eif #RFC 1918 private IP $cmd 203 deny all from 127.0.0.0/8 to any in via $eif #loopback $cmd 204 deny all from 0.0.0.0/8 to any in via $eif #loopback $cmd 205 deny all from 169.254.0.0/16 to any in via $eif #DHCP auto-config $cmd 206 deny all from 192.0.2.0/24 to any in via $eif #reserved for docs $cmd 207 deny all from 204.152.64.0/23 to any in via $eif #Sun cluster $cmd 208 deny all from 224.0.0.0/3 to any in via $eif #Class D & E multicast # Запрещаем ident $cmd 215 deny tcp from any to any 113 in via $eif # Запрещаем весь сервис Netbios. 137=имя, 138=дейтаграмма, 139=сессия $cmd 220 deny tcp from any to any 137 in via $eif $cmd 221 deny tcp from any to any 138 in via $eif $cmd 222 deny tcp from any to any 139 in via $eif $cmd 223 deny tcp from any to any 81 in via $eif # Входящий пинг, несколько типов $cmd 300 allow icmp from any to $wanip in via $eif icmptypes 0,8,11 limit src-addr 2 # Разрешаем входящую www функцию, если есть вэб сервер $cmd 310 allow tcp from any to $wanip 80 in via $eif setup limit src-addr 2 # Разрешаем входящие безопасные SSH, номер порта лучше сменить $cmd 320 allow tcp from any to $wanip 22 in via $eif setup limit src-addr 2 # Разрешаем входящую почту SMTP, если есть почтовый сервер $cmd 330 allow tcp from any to $wanip 25 in via $eif setup limit src-addr 2 # Разрешаем входящую почту POP3, если есть почтовый сервер $cmd 340 allow tcp from any to $wanip 110 in via $eif setup limit src-addr 2 # Разрешаем RAdmin, номер порта лучше сменить $cmd 350 allow tcp from any to $wanip 4899 in via $eif setup limit src-addr 2 # Разрешаем уже установленные соединения $cmd 360 allow all from any to any established ########### Final ############### # рубим все, что не ушло в скип $cmd 399 deny log all from any to any # Исходящий NAT $cmd 400 divert natd ip from any to any out via $eif # Выпускаем пакеты из скипа $cmd 410 allow all from any to any # Режем все лишнее с занесением в лог $cmd 999 deny log all from any to any Меняем в rc.conf строчку firewall_type="open" на firewall_script="/etc/rules" и применяем скрипт с правилами: # nohup sh /etc/rules Все тщательно проверяем и приходим к выводу, что у нас не работает RAdmin =) Прокинуть порты на внутренние машины можно стандартными средствами natd, но лишние проблемы нам не нужны и поэтому мы пойдем другим путем - поставим из портов rinetd, отвечающий за проброс портов и требующий тривиальной настройки: # cd /usr/ports/net/rinetd # make install clean # rehash Правим его конфиг, у меня примерно так выглядит: /usr/local/etc/rinetd.conf 213.221.56.98 4899 192.168.0.100 4899 Добавляем его в rc.conf и стартуем: # echo 'rinetd_enable'="YES" > > rc.conf # /usr/local/etc/rc.d/rinetd start PS: для создания этой статьи активно использовались материалы с сайта http://www.lissyara.su, за что ему огромная благодарность!

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, Pahanivo (ok), 13:21, 29/07/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Прокинуть порты на внутренние машины можно стандартными средствами natd,
    но лишние проблемы нам не нужны и поэтому мы пойдем другим путем ...
    Стрынные у вас пути, товарисщ. :)
     
     
  • 2.2, JIexa (??), 17:27, 30/07/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Могли бы более обоснованно ответить а не выпендриваться.
     
     
  • 3.3, Pahanivo (ok), 19:09, 31/07/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Могли бы более обоснованно ответить а не выпендриваться.

    Вообщето это стандартно делается natd:
    /sbin/natd -n rl0 -f /etc/natd.cfg - стартем

    в /etc/natd.cfg:
    ...
    redirect_port udp 192.168.0.100:27015 ххх.ххх.121.161:666
    redirect_port tcp 192.168.0.100:3690 ххх.ххх.121.161:3690
    ...

     
     
  • 4.5, avsess (??), 12:41, 01/08/2008 [^] [^^] [^^^] [ответить]  
  • +/
    А как через natd пробросить порт, если хожу через чужую сетку и надо открыть только для определенного ip? тогда natd уже на канает, ведь источник у меня - шлюз той сети через которую ходишь. тоесть на ipfw, не iptables не годятся без плясок с бубном.
     
     
  • 5.6, Pahanivo (ok), 16:09, 01/08/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >А как через natd пробросить порт, если хожу через чужую сетку и
    >надо открыть только для определенного ip? тогда natd уже на канает,
    >ведь источник у меня - шлюз той сети через которую ходишь.
    >тоесть на ipfw, не iptables не годятся без плясок с бубном.
    >

    Ппц, я в шоке. С такой уверренонсть пароть такую чушь.
    Натом natd пробрасываем порт как описаны выше, фареволом ipfw его фильтруем.

    Екзампел:
    (natd)
    redirect_port udp 192.168.0.100:27015 217.217.217.217:666

    (ipfw)
    ipfw add allow ip from MY_NET to 217.217.217.217 666
    ipfw add deny ip from any to 217.217.217.217 666

     
  • 5.7, Pahanivo (ok), 16:10, 01/08/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Нашел из-за чего с бубном плясать. Кто тебе ваабще бубен доверил ))


     
  • 5.12, гыук (?), 01:38, 09/08/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >тоесть на ipfw, не iptables не годятся без плясок с бубном.

    Опухли?В айпитаблесе можно как рулесы для натинга нарисовать так и файрвольные правила.Если вы имеючи в распоряжении нат и фаервол не можете им правила нарисовать как вам надо - в этом не нат и фаервол виноваты.Кстати никакой natd в случае iptables нафиг не впился: там нат сполпинка делается рулесами айпитаблесов.Btw так половина роутеров-коробочек с натом и фаерволом нынче делают - айпитаблесы все и рюхают по заданным в вебморде правилам.

     
  • 2.8, Alchemist (ok), 17:45, 04/08/2008 [^] [^^] [^^^] [ответить]  
  • +/
    > Прокинуть порты на внутренние машины можно стандартными средствами natd,
    > но лишние проблемы нам не нужны и поэтому мы пойдем другим путем ...
    > Стрынные у вас пути, товарисщ. :)

    Способов решения одной задачи может быть много. Главное - результат, также важно удобство. Мне удобнее через rinetd ;)

     

  • 1.4, Сергей (??), 11:52, 01/08/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Хотелось бы узнать мотивы автора, по которым он использует файрволл, открытый по умолчанию...
      Я бы понял, если бы использовался прозрачный прокси...
    А применительно к 7-ке, можно и другой планировщик в ядре использовать и поддержку nat прямо в IPFW внедрить
    options         IPFIREWALL_NAT
      
     
     
  • 2.9, Alchemist (ok), 17:49, 04/08/2008 [^] [^^] [^^^] [ответить]  
  • +/
    > Хотелось бы узнать мотивы автора, по которым он использует файрволл, открытый по
    > умолчанию...
    >  Я бы понял, если бы использовался прозрачный прокси...

    Фаер был открыт по умолчанию т.к. ядро я собирал и все настраивал по ssh. В скрипте последнее правило запрещает весь трафик - оно кроет дефолтное открытое. Какие проблемы? =)
    >А применительно к 7-ке, можно и другой планировщик в ядре использовать и поддержку nat
    > прямо в IPFW внедрить
    > options         IPFIREWALL_NAT

    Пробовал я этот ядерный нат, но смысла в переходе на него пока не вижу. У меня нагрузка на шлюз небольшая т.ч. natd вполне устаривает, плюс в ядерном правила как-то не особо удобно пишутся :P

     
     
  • 3.10, Сергей (??), 16:16, 06/08/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >> Хотелось бы узнать мотивы автора, по которым он использует файрволл, открытый по
    >> умолчанию...
    >>  Я бы понял, если бы использовался прозрачный прокси...
    >
    >Фаер был открыт по умолчанию т.к. ядро я собирал и все настраивал
    >по ssh. В скрипте последнее правило запрещает весь трафик - оно
    >кроет дефолтное открытое. Какие проблемы? =)

      Проблемы... можно забыть, закоментировать, по поводу ssh, ты же в статье пишешь
    Меняем в rc.conf строчку firewall_type="open" на
                                           ^^^^^^
    firewall_script="/etc/rules" и применяем скрипт с правилами:

    >>А применительно к 7-ке, можно и другой планировщик в ядре использовать и поддержку nat
    >> прямо в IPFW внедрить
    >> options         IPFIREWALL_NAT
    >
    >Пробовал я этот ядерный нат, но смысла в переходе на него пока
    >не вижу. У меня нагрузка на шлюз небольшая т.ч. natd вполне
    >устаривает, плюс в ядерном правила как-то не особо удобно пишутся :P

       Да также они пишутся...
      
    >

     
     
  • 4.11, Alchemist (ok), 00:29, 09/08/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >  Да также они пишутся...

    Не соглашусь. Из мана по ipfw:



    NAT, REDIRECT AND LSNAT
         First redirect all the traffic to nat instance 123:

       ipfw add nat 123 all from any to any

         Then to configure nat instance 123 to alias all the outgoing traffic with
         ip 192.168.0.123, blocking all incoming connections, trying to keep same
         ports on both sides, clearing aliasing table on address change and keep-
         ing a log of traffic/link statistics:

       ipfw nat 123 config ip 192.168.0.123 log deny_in reset same_ports

         Or to change address of instance 123, aliasing table will be cleared (see
         reset option):

       ipfw nat 123 config ip 10.0.0.1

         To see configuration of nat instance 123:

       ipfw nat 123 show config

         To show logs of all the instances in range 111-999:

       ipfw nat 111-999 show

         To see configurations of all instances:

       ipfw nat show config

         Or a redirect rule with mixed modes could looks like:

       ipfw nat 123 config redirect_addr 10.0.0.1 10.0.0.66
       redirect_port tcp 192.168.0.1:80 500
       redirect_proto udp 192.168.1.43 192.168.1.1
       redirect_addr 192.168.0.10,192.168.0.11
       10.0.0.100 # LSNAT
       redirect_port tcp 192.168.0.1:80,192.168.0.10:22
       500       # LSNAT

         or it could be splitted in:

       ipfw nat 1 config redirect_addr 10.0.0.1 10.0.0.66
       ipfw nat 2 config redirect_port tcp 192.168.0.1:80 500
       ipfw nat 3 config redirect_proto udp 192.168.1.43 192.168.1.1
       ipfw nat 4 config redirect_addr
       192.168.0.10,192.168.0.11,192.168.0.12
    10.0.0.100
       ipfw nat 5 config redirect_port tcp
      192.168.0.1:80,192.168.0.10:22,192.168.0.20:25 500



     

  • 1.13, Peter (??), 16:39, 10/08/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    нередко бывает нужно трафик учитывать с детальностями
    доступом по времени и т. д.
    это на винду поставил трафик инспектор и всё
    а тут думать иногда приходится
     
     
  • 2.14, Alchemist (ok), 18:12, 10/08/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >нередко бывает нужно трафик учитывать с детальностями
    >доступом по времени и т. д.
    >это на винду поставил трафик инспектор и всё
    >а тут думать иногда приходится

    Я трафик смотрю с виндовой машины через IAM - там все детально. Под никс тоже тьма решений есть с соответствующими функциями

     
  • 2.16, Pavleg (?), 13:49, 13/11/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Трафик можно дивертить на ipacctd
     
     
  • 3.17, Alchemist (ok), 16:06, 13/11/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Трафик можно дивертить на ipacctd

    Можно... еще можно использовать ng_ipacctd, trafd, netams, netflow... вариантов море!

     

  • 1.15, Morfius (??), 09:40, 13/10/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ну вы блин даете.... нормальная статья, каждый делает так как ему удобно, ине надо изобретать велосипед.... накинулись понимаешь на автора... сами то давно такими были
     
     
  • 2.18, Alchemist (ok), 16:07, 13/11/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >ну вы блин даете.... накинулись понимаешь на автора...

    Да никто особо и не накидывался =))


     

  • 1.19, cahvay (?), 12:19, 21/11/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > makeoptions     DEBUG=-g                # Build kernel with gdb(1) debug symbols

    а это зачем для "интернет шлюза на freebsd"?

     
     
  • 2.20, Alchemist (ok), 12:33, 21/11/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >> makeoptions     DEBUG=-g                # Build kernel with gdb(1) debug symbols
    >
    >а это зачем для "интернет шлюза на freebsd"?

    Эта опция по умолчанию содержится в дефолтном конфиге ядра и суть ее в следующем:
    "Эта опция добавляет в бинарный файл доп. символы для отладки через gdb. Влияния на производительность никакого."

     
     
  • 3.21, cahvay (?), 23:17, 21/11/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >>> makeoptions     DEBUG=-g                # Build kernel with gdb(1) debug symbols
    >>а это зачем для "интернет шлюза на freebsd"?
    >Эта опция по умолчанию содержится в дефолтном конфиге ядра и суть ее
    >в следующем:

    "...в общем, ушел от ответа" (ц) жванецкий

     

  • 1.22, eXoit (?), 17:38, 14/12/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Привет, спасибо за статью! Но столкнулся с проблемой: не могу пропинговать внешние адреса с локальных машин. Инет на них работает. Думаю что дело в ipfw, но не могу понять где.
     
     
  • 2.23, eXoit (?), 22:38, 14/12/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Все просто: gateway_enable="YES" в rc.conf - глупо было про это забыть
     

  • 1.24, Sliver (ok), 12:31, 15/01/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Делаю все по статье. Редактирую новое ядро ROUTER как написано. При сборке ядра сразу ошибка:
    >>> stage 1: configuring the kernel
    >
    > /usr/src/sys/amd64/conf/ROUTER: unknown option "IPFIREWALL_VER"

    Изменяю опцию ядра на:
    > option "IPFIREWALL_VERBOSE"

    Снова пересобираю ядро и снова ошибка:
    >>> stage 3.2: building everything
    > cc1: warnings being treated as errors
    > /usr/src/sys/cam/cam_periph.c: In > function 'cam_periph_mapmem':
    > /usr/src/sys/cam/cam_periph.c:643: warning: > pointer targets in assignment differ in signedness
    > /usr/src/sys/cam/cam_periph.c:671: warning: > pointer targets in assignment differ in signedness
    > *** Error code 1
    >
    > Stop in /usr/obj/usr/src/sys/ROUTER.

    Закоментил все опции, описанные в статье, таже ошибка! Ядро, естественно, не инсталируется.  Система - FreeBSD 7.1 RС2 amd64, установлена с нуля и проапгрейджена. В FreeBSD 7.1 RELEASE i386 таких проблем небыло. Также пытался создавать ядро с "options IPFW2", но такая опция не поддерживается. Подскажите, в чем может быть проблема?
    P.S. Вобщем, проблема создания шлюза решается после установки webmin. Подключив динамически требуемые модули ipfw, ipnat, ipfilter все работеат и без "нового" ядра. Но хотелось бы сделать все правильно...

     
     
  • 2.25, Alchemist (ok), 14:45, 15/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Делаю все по статье.
    > Система - FreeBSD 7.1 RС2 amd64, установлена с нуля и
    >проапгрейджена.

    Я все делал на 7.0 RELEASE.
    RC никогда не использовал и не собираюсь этого делать.

     
  • 2.26, cahvay (?), 21:53, 17/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >> /usr/src/sys/amd64/conf/ROUTER: unknown option "IPFIREWALL_VER"

    что-то я примерно с 4-й версии не помню опции _VER. _VERBOSE - таки да. у автора, походу, опечатка.

    >Снова пересобираю ядро и снова ошибка:
    >>>> stage 3.2: building everything
    >> cc1: warnings being treated as errors

    сделайте rm -rf /usr/obj и снова make buildkernel с _VERBOSE.

     
     
  • 3.27, Sliver (ok), 16:35, 22/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо за помощь. Проблема решена после установки FreeBSD 7.1 RELEASE amd64 и с добавлением правильной опции в ядро, которую автор уже исправил в данной статье:
    > option "IPFIREWALL_VERBOSE"

    В FreeBSD 7.1 RС2 amd64 даже после
    > # rm -rf /usr/obj
    > # make buildkernel KERNCONF=ROUTER

    и после
    > # make buildkernel KERNCONF=GENERIC

    выскакивала приведенная выше ошибка.
    Остался один вопросик по статье.
    > Добавляем в rc.conf строки:
    >         …
    >         natd_interface="rl0";

    Зачем нужна точка с запятой в конце?
    P.S. С фрей знаком три недели, по этому не знал, что РЦ может подвести.

     

  • 1.28, Tavork (ok), 22:22, 18/03/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Спасибо за статью, она мне очень помогла.
    Но у меня остался вопрос с почтовыми программами, Bat и Outlook никак не хотят работать на нескольких компах. Надо ли для них пробрасовать 110 и 25 порт и как это сделать для нескольких компов?
    redirect_port tcp 10.73.200.152:110 110
    redirect_port tcp 10.73.200.152:25 25
    Это на один комп, а как остальные?
     
     
  • 2.29, mak (??), 16:28, 21/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Спасибо за статью, она мне очень помогла.
    >Но у меня остался вопрос с почтовыми программами, Bat и Outlook никак
    >не хотят работать на нескольких компах. Надо ли для них пробрасовать
    >110 и 25 порт и как это сделать для нескольких компов?
    >
    >redirect_port tcp 10.73.200.152:110 110
    >redirect_port tcp 10.73.200.152:25 25
    >Это на один комп, а как остальные?

    а зачем тебе пробрасывать порты на все компы внутри сети?
    то что ты написал имело бы смысл если бы у тебя на локальном сервере с ип 10.73.200.152 был натсроен почтовый сервак, да и этого еще не достаточно

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

    ipfw add allow tcp from any to твой.внешний.ай-пи.адр 25 in via твой.внешний.интерфейс setup

     
     
  • 3.30, Tavork (ok), 11:14, 25/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо за ответ, мне именно нужно разрешить пользователям своей сети получать
    почту через BAT
    Но правило ipfw add allow tcp from any to твой.внешний.ай-пи.адр 25 in via твой.внешний.интерфейс мне не помогло.
    Да, по-моему, оно уже есть в текущей статье как правила
    $cmd 160 $skip all from $lannet to any 25 out via $eif setup keep-state
    $cmd 170 $skip all from $lannet to any 110 out via $eif setup keep-state
    $cmd 330 allow tcp from any to $wanip 25 in via $eif setup limit src-addr 2
    $cmd 340 allow tcp from any to $wanip 110 in via $eif setup limit src-addr 2

    У меня не установлен почтовый сервер и в rc.conf написано sendmail_enable="NO". Мне просто нужно, чтоб почтовый трафик проходил мимо сервера.
    Или мне необходимо поставить почтовый сервер, sendmail включить?

     
     
  • 4.31, Alchemist (ok), 13:01, 26/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Для этого в конфиге имеется:

    $cmd 160 $skip all from $lannet to any 25 out via $eif setup keep-state
    $cmd 170 $skip all from $lannet to any 110 out via $eif setup keep-state

     
     
  • 5.32, Tavork (ok), 10:14, 27/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Для этого в конфиге имеется:
    >
    >$cmd 160 $skip all from $lannet to any 25 out via $eif
    >setup keep-state
    >$cmd 170 $skip all from $lannet to any 110 out via $eif
    >setup keep-state

    Но это не помогло, может сквид мешает? Правила файерволла я брал из статьи как есть, а сквид у меня почти аналогичен, только у меня самс стоит и еще на всякий случай прописал
    acl Safe_ports port 110
    acl Safe_ports port 25

     
     
  • 6.33, Alchemist (ok), 10:18, 27/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Но это не помогло, может сквид мешает? Правила файерволла я брал из
    >статьи как есть, а сквид у меня почти аналогичен, только у
    >меня самс стоит и еще на всякий случай прописал
    >acl Safe_ports port 110
    >acl Safe_ports port 25

    А при чем тут сквид? Он вообщето кешированием занимается.

     
     
  • 7.34, Tavork (ok), 17:01, 27/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >>Но это не помогло, может сквид мешает? Правила файерволла я брал из
    >>статьи как есть, а сквид у меня почти аналогичен, только у
    >>меня самс стоит и еще на всякий случай прописал
    >>acl Safe_ports port 110
    >>acl Safe_ports port 25
    >
    >А при чем тут сквид? Он вообщето кешированием занимается.

    Ну тогда из-за чего у меня наотрез отказываются работать почтовые программы клиентов внутри локальной сети??? Что им мешает?

     
     
  • 8.35, Alchemist (ok), 17:09, 27/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    1 lannet 192 168 0 0 24 2 Нет запретов внутри интерфейса смотрящего в лока... текст свёрнут, показать
     
     
  • 9.36, Tavork (ok), 18:16, 28/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Не понял, надо убрать 10 правило А с lannet что не так У меня lannet 10 73 20... текст свёрнут, показать
     

  • 1.37, mak (??), 15:00, 30/03/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    во-первых
    >>acl Safe_ports port 110
    >>acl Safe_ports port 25

    это что такое?
    ты завернул трафик идущий по портам смтп и рор на сквид?
    если нет, тогда и описывать эти порты в сквиде не стоит

    если же ты форвардишь не только все что идет по 80-му порту а еще и 25, 110, тогда убери эти порты из форвардинга, и в squid.conf закаментируй все acl b http_access в которых они участвуют

    далее во-вторых, как японял тебе просто нужно разрешить нат всего что ходит по 25 и 110 портам. если так, то я думаю что должно хватить вот чего

    можешь сделать так (я, например, запускаю нат не через рц.конф, а прямо в скрипте фаера):

    natd="/sbin/natd"
    $natd -a ${твой.внешний.ип}
    #если нат у тебя уже запущен, тогда пропусти то что я выше написал
    #дальше тебе нужно разрешить обмениваться пакетами внутренней и внешней сети,
    #для этого пишем следующие правила (у меня они записаны после ната):
    #сам диверт во внутреннюю сеть и обратно (вх и исх) через внешний иф:
    ${FwCMD} add divert natd ip from any to ${IpOut} in via ${LanOut}
    ${FwCMD} add divert natd ip from ${NetIn} to any out via ${LanOut}
    #далее собственно сами разрешающие правила (обязательно после, как минимум входящего диверта):
    ${FwCMD} add allow ip from any 25,110 to ${NetIn}
    ${FwCMD} add 3100 allow tcp from ${NetIn} to any 25,110 via ${LanIn} setup

    вот так должно работать.

     
     
  • 2.38, mak (??), 15:11, 30/03/2009 [^] [^^] [^^^] [ответить]  
  • +1 +/
    забыл обозначения пояснить, хотя должно быть понятно и так..
    в посте выше:
    ${IpOut} - внешний IP
    ${LanOut} - внешний интерфейс
    ${NetIn} - локалка (192.160.0.0/24)
    ${LanIn} - внутренний интерфей


    зы - в последнем правиле я при копи/пасте случайно оставил его номер (3100)

    в любом случае тебе нужно просматриватй твой ipfw show и анализировать на каких из твоих правилах у тебя останавливаются пакеты, для теста я бы вообще убрал все что можно и оставил только необходимое чтобы попробовать будут ли пахать рпедложенные конструкции, а дальше уже искать какими твоими правилами оно блокируется и писать список правил корректно, а главное с пониманием того что ты делаешь.

    да и не видя твоих конфигов правила фаера, сквида и ната тяжело что либо советовать.

     
     
  • 3.42, Tavork (ok), 14:10, 02/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо за развернутый ответ Правда, пока почта не пошла, но уже есть с чем раб... большой текст свёрнут, показать
     

  • 1.39, geminis (?), 12:48, 31/03/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Спасибо автору за статью!
    Сделал все как в статье, но почему-то не работают клиент-банки (443 порт) и аська (5190).
    Также в браузере не грузятся странички с безопасным соединением (например gmail.com):
    --
    При соединении с www.google.com произошла ошибка.
    SSL получило запись, длина которой превышает максимально допустимую.
    (Код ошибки: ssl_error_rx_record_too_long)
    --
    А если в свойствах браузера указать явный прокси - то грузятся.
    Помогите с мыслями, что не так.
    Заранее благодарю!


     
     
  • 2.40, geminis (?), 13:11, 31/03/2009 [^] [^^] [^^^] [ответить]  
  • +1 +/
    в access.log следующее:

    1238490265.501      0 192.168.0.202 TCP_HIT/301 591 GET http://gmail.com/ - NONE/- text/html
    1238490266.067    118 192.168.0.202 TCP_MISS/302 1066 GET http://mail.google.com/mail/ - DIRECT/72.14.221.17 text/html
    1238490266.081      0 192.168.0.202 TCP_DENIED/400 1424 NONE NONE:// - NONE/- text/html

     
  • 2.41, Alchemist (ok), 13:15, 31/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Спасибо автору за статью!
    >Сделал все как в статье, но почему-то не работают клиент-банки (443 порт) и аська (5190).
    >Также в браузере не грузятся странички с безопасным соединением (например gmail.com):
    >При соединении с www.google.com произошла ошибка.
    >SSL получило запись, длина которой превышает максимально допустимую.
    >(Код ошибки: ssl_error_rx_record_too_long)

    У https есть косяк с прозрачным прокси, т.ч. его лучше на сквид не заворачивать, а напрямую выпускать. Либо прописать прокси в браузере или самом клиент-банке...

     
     
  • 3.43, Tavork (ok), 11:26, 10/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Снова я обращаюсь к знающим людям со все той же проблемой Почта с компьютеров в... большой текст свёрнут, показать
     
     
  • 4.44, cahvay (?), 18:58, 12/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Снова я обращаюсь к знающим людям со все той же проблемой. Почта
    >с компьютеров внутри сети не отправляется в интернет через почтовые агенты
    >(Аутлук, бат).
    >$cmd 007 allow ip from any 25,110 to $lannet
    >$cmd 008 allow tcp from $lannet to any 25,110 via em1 setup

    (до конца ниасилил) попробуй заменить на это:
    $cmd 007 allow tcp from any 25,110 to $lannet
    $cmd 008 allow tcp from $lannet to any 25,110

    >$cmd 399 deny log all from any to any
    >$cmd 999 deny log all from any to any

    что в логе-то пишется по поводу 25 и 110?
    я бы еще сделал "deny log logamount 0 all..." для дебага.

     
     
  • 5.45, Tavork (ok), 11:07, 30/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >[оверквотинг удален]
    >
    >(до конца ниасилил) попробуй заменить на это:
    >$cmd 007 allow tcp from any 25,110 to $lannet
    >$cmd 008 allow tcp from $lannet to any 25,110
    >
    >>$cmd 399 deny log all from any to any
    >>$cmd 999 deny log all from any to any
    >
    >что в логе-то пишется по поводу 25 и 110?
    >я бы еще сделал "deny log logamount 0 all..." для дебага.

    Всё это перепробовал, при отправке почты никаких логов о портах 25 и 110 нет.

    :(

     
     
  • 6.46, Tavork (ok), 12:41, 30/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Нужен ли qpopper или его аналоги для получения почты по pop-протоколу из вне почтовыми программами?
    Или все дело в записи sendmail_enable="NO" в rc.conf?
     
     
  • 7.47, Tavork (ok), 15:24, 22/05/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Никто не поможет???
    Что неужели только у меня такая проблема?

     
     
  • 8.48, Alchemist (ok), 16:07, 22/05/2009 [^] [^^] [^^^] [ответить]  
  • +/
    SMTP сервер требует авторизацию Проходит ли telnet mailserver 25 ... текст свёрнут, показать
     
  • 8.49, sergeyl (ok), 01:29, 25/05/2009 [^] [^^] [^^^] [ответить]  
  • +/
    По всей видимости загвоздка в переходе семёрки на кернел-нат точнее в не полной... текст свёрнут, показать
     
     
  • 9.50, Alchemist (ok), 10:35, 25/05/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Уважаемый Kernel NAT в этой статье вообще не используется NATD Конфиги ну... текст свёрнут, показать
     
     
  • 10.51, sergeyl (ok), 13:36, 25/05/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Молодой человек, не стоит так горячится, рвать на себе рубашку и доказывать, что... большой текст свёрнут, показать
     
     
  • 11.52, Alchemist (ok), 14:45, 25/05/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Моя статья не включает руководство по настройке почтовых систем, о чем я намекну... текст свёрнут, показать
     
     
  • 12.53, sergeyl (ok), 21:36, 25/05/2009 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Как то Вы молодой человек неадекватно реагируете на мои сообщения И почему то н... текст свёрнут, показать
     
     
  • 13.54, Alchemist (ok), 23:23, 25/05/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Я очень адекватно реагирую и довольно четко обозначаю свою позицию Повторюсь - ... текст свёрнут, показать
     
     
  • 14.55, Tavork (ok), 09:49, 26/05/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Люди Не сорьтесь telnet smtp pochta ru 25 - не удается подключится к узлу Сб... текст свёрнут, показать
     
     
  • 15.56, Alchemist (ok), 10:11, 27/05/2009 [^] [^^] [^^^] [ответить]  
  • +/
    gt оверквотинг удален Подскажу - 209209703 ... текст свёрнут, показать
     

  • 1.57, Игорь (??), 12:04, 12/03/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    При использовании такого фаервола у меня интернет обрубается у всех! Привели бы лучше пример просто рабочего фаервола. нужно хотя бы разрешить SQUID-у лезть в интернет.
     
     
  • 2.58, Hate (ok), 11:11, 13/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >При использовании такого фаервола у меня интернет обрубается у всех! Привели бы
    >лучше пример просто рабочего фаервола. нужно хотя бы разрешить SQUID-у лезть
    >в интернет.

    На гугле забанили? Думать лень или мозг отсутствует? Учиться не хочем?

    Может тебе еще в баночку пукнуть?

     
     
  • 3.59, Игорь (??), 08:45, 15/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    В общем с фаерволом немного разобрался. Проблема теперь со SQUID-ом. Чтобы сквид работал прозрачно я в начале squid.conf написал

    # порт прозрачного прокси
    http_port 3129 transparent

    В фаерволе сделал правило:

    # отправляем всех на squid (в данном случае - прокси прозрачный)
    ${FwCMD} add fwd 127.0.0.1,3128 tcp from ${NetIn}/${NetMask} to any 80 via ${LanOut}

    где:

    LanOut="tun0"            # внешний интерфейс
    LanIn="ale0"            # внутренний интерфейс
    IpOut="192.168.9.96" # внешний IP адрес машины
    IpIn="200.0.0.96"   # внутренний IP машины
    NetMask="24"            # маска сети

    Но squid все равно прозрачно не работает. Только если в браузере указывать IP прокси и порт, тогда все работает.
    Но я все же хочу настроить прозрачный прокси. Соединение с интернет настроено через PPPoE.
    Облазил гугл и ман squid-а. но решения все равно пока не нашел... Что еще можете посоветовать?

     
     
  • 4.60, Игорь (??), 08:48, 15/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Извените, сделал опечатку

    # отправляем всех на squid (в данном случае - прокси прозрачный)
    ${FwCMD} add fwd 127.0.0.1,3129 tcp from ${NetIn}/${NetMask} to any 80 via ${LanOut}

    Прокси все равно прозрачно не работает.

     
     
  • 5.61, Игорь (??), 11:46, 15/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >Извените, сделал опечатку
    >
    ># отправляем всех на squid (в данном случае - прокси прозрачный)
    >${FwCMD} add fwd 127.0.0.1,3129 tcp from ${NetIn}/${NetMask} to any 80 via ${LanOut}
    >
    >
    >Прокси все равно прозрачно не работает.

    У меня получился прозрачный прокси!
    Надо было добавить в фаервол вместо строки выше(пример ipfw list):

    00012 fwd 200.0.0.ХХ,3129 ip from any to any dst-port 80,3129,8080 recv fxp0
    00012 allow ip from any 80,3129,8080 to any xmit tun0
    00012 fwd 200.0.0.ХХ,3129 ip from any to any dst-port 80,3129,8080 recv tun0
    00013 allow tcp from 200.0.0.ХХ 3129 to any
    00013 allow tcp from any to 200.0.0.ХХ dst-port 3129
    00013 allow tcp from 200.0.0.ХХ 3128 to any
    00013 allow tcp from any to 200.0.0.ХХ dst-port 3129

    Осталось только аську сделать и т.п....

     

  • 1.62, xom94ok (?), 15:38, 25/03/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Сделал все по статье, но по http не пускает.
    пинги идут и по ip и по именам.
    но в браузере страницы не открываются.
    не подскажите чем это может быть вызвано?
     
     
  • 2.63, Игорь (??), 20:25, 29/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >Сделал все по статье, но по http не пускает.
    >пинги идут и по ip и по именам.
    >но в браузере страницы не открываются.
    >не подскажите чем это может быть вызвано?

    Проверь запущен ли Сквид и в правилах фаервола должен быть ворвардинг с адреса лок. сети, порт сквида с любого на любой адрес порт 80,порт сквида recv интерфейс сет. карты смотрящей в локальную сеть.
    fwd 200.0.0.ХХ,3129 ip from any to any 80,3129,8080 recv fxp0
    где:
    200.0.0.ХХ,3129 - адрес, порт на котором запущен сквид
    fxp0 - интерфейс сет. карты смотрящей в локальную сеть.

     

  • 1.64, SunWind (ok), 11:21, 24/04/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    http://www.xserver.a-real.ru/
    ставишь ИКС и нет проблем.
    "Универсальный интернет-шлюз с инструментами для защиты корпоративной сети, учета трафика, управления доступом, развертывания почтового, прокси, файлового сервера, Web и jabber сервера, организации IP-телефонии c поддержкой 64-битных систем."
     
  • 1.66, Дмитрий Ю. Карпов (?), 16:15, 28/10/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Зачем запрещать identd? Чем он помешал?

    Запрещать дейтаграммы, указав "tcp" - это феерично!

     
  • 1.67, tehnikpc (ok), 17:16, 06/02/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    "# Нет запретов внутри интерфейса смотрящего в локальную сеть
    $cmd 010 allow all from any to any via re0"
    Толку тогда от фаерволла ноль.
     
     
  • 2.68, Alchemist (ok), 21:52, 06/02/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > "# Нет запретов внутри интерфейса смотрящего в локальную сеть
    > $cmd 010 allow all from any to any via re0"
    > Толку тогда от фаерволла ноль.

    А вот это ты братец погнал! Толку ноль как раз это ограничивать. Относительно локалки фаервол - это доверенный девайс. А если же его взломают и захотят полезть с него в локалку - взломщик сам себе какие надо порты откроет. А вообще я удивляюсь, что это статью кто-то еще читает. =) Видимо фря с ipfw еще у кого-то жива. Сам я сначала на pf в качестве фаера перешел, а потом и вовсе на linux перебрался.

     
     
  • 3.69, tehnikpc (ok), 06:57, 07/02/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >> "# Нет запретов внутри интерфейса смотрящего в локальную сеть
    >> $cmd 010 allow all from any to any via re0"
    >> Толку тогда от фаерволла ноль.
    > А вот это ты братец погнал!

    Да это ты наверное гонишь. Таких правил не должно быть нигде и никогда. Всё, что не разрешено, должно быть запрещено. Фаерволл для того и существует что бы разрешать только критические порты, а остальное должно быть заблокировано.

    > а потом и вовсе на linux перебрался.

    Я тоже потихоньку начал переходить на Linux :). Кстати, какой дистрибутив выбрал?

     

    игнорирование участников | лог модерирования

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




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

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