Страница 1 из 1
"FreeBSD, nat+firewall"
Добавлено: 2010-10-27 15:41:07
dmitriy10
схема --
http://img716.imageshack.us/img716/5584/sxema1.gif
как понять - что именно мешает ноуту выходить в и-нет?
какой еще информации не хватает на схеме?
с фрибсд раньше не работал вообще, все делаю по мануалам, в результате ужал фаерволл вот до того что на схеме - результата все равно нет.
p.s.
# uname -a
FreeBSD mail2 6.4-RELEASE FreeBSD 6.4-RELEASE #0: Wed Nov 26 12:11:1
6 UTC 2008
root@dessler.cse.buffalo.edu:/usr/obj/usr/src/sys/SMP i386
p.p.s.
с сервера 8.8.8.8 пингуется, а с ноута - нет
хочется понять почему с ноута ничего не работает
Re: "FreeBSD, nat+firewall"
Добавлено: 2010-10-27 15:55:59
snorlov
Ничего не понятно, у вас что, 2-е vlan'ы, которые выпускаете через каталист, причем в одной vlan1 висит фря и циска, а в другой vlan2 фря и нотик, и вы хотите чтобы чтобы vlan2 у вас пускалась в инет через nat на vlan1. Правильно я понял или же нет, но тогда причем здесь сервер 8.8.8.8?
Re: "FreeBSD, nat+firewall"
Добавлено: 2010-10-27 16:20:14
dmitriy01
на циске2811 поднят влан119. подсеть х.х.х.16/28 (айпишник циски х.х.х.17)
на физическом интерфейсе сервера (em0) поднятно два саб-интерфейса, алиасы, как угодно их можно назвать, эти интерфейсы называются "vlan119" и "vlan401", потому что они в виланах 119 и 401ом.
на интерфейсе сервера "vlan119" - ip x.x.x.19
на интерфейсе сервера "vlan401" - ip 10.0.1.254
на интерфейсе сервера em0 - ip x.x.x.30
я хочу чтоб сервер раздавал и-нет, который он получает от циски, ноутбуку, который силит в 401 вилане и имеет адрес из диапазона 10.0.1.0 /24
правила фаервола разрешают все вообще всем
в файле конфигурации ядра написано вроде бы то что нужно
роутинговая таблица тоже, вроде бы, в порядке.
по уму надо бы циску отрезать вообще и обозвать этот конец как ISP и все.
но хотелось деталей больше указать на схеме
сервер 8.8.8.8 -- это гугловский днс, я его пингую чтоб проверить есть и-нет или нет

Re: "FreeBSD, nat+firewall"
Добавлено: 2010-10-27 17:25:09
sch
1. что указано в rc.conf для natd_interface? должен быть vlan119
2. Я правильно понял, что физический интерфейс em0 вообще в работе сети не участвует? Судя по схеме: реальная подсеть x.x.x.16/28 доступна через vlan119, внутренняя сеть 10.0.1.0/24 доступна через vlan401.
3. Предполагая, что мои предположения верны - должен работать набор правил:
Код: Выделить всё
allow ip from any to any via lo0
deny ip from any to 127.0.0.0/8
deny ip from 127.0.0.0/8 to any
allow all from 10.0.1.0/24 to 10.0.1.0/24 via vlan401
deny ip from any to 0.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,169.254.0.0/16,192.0.2.0/24 out via vlan119
deny ip from 0.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,169.254.0.0/16,192.0.2.0/24 to any in via vlan119
deny ip from any to 224.0.0.0/4,240.0.0.0/4 out via vlan119
deny ip from 224.0.0.0/4,240.0.0.0/4 to any in via vlan119
divert 8668 all from 10.0.1.0/24 to any out via vlan119
divert 8668 all from any to 10.0.1.0/24 in recv vlan119
allow all from any to any
если заработает - то последнее правило
allow all from any to any надо будет заменить на требуемый набор разрешений и запретов.
Re: "FreeBSD, nat+firewall"
Добавлено: 2010-10-27 18:41:07
dmitriy01
1. что указано в rc.conf для natd_interface? должен быть vlan119
было em0
2. Я правильно понял, что физический интерфейс em0 вообще в работе сети не участвует? Судя по схеме: реальная подсеть x.x.x.16/28 доступна через vlan119, внутренняя сеть 10.0.1.0/24 доступна через vlan401.
да, все совершенно верно. em0 был присвоен адрес для удобства управления.
если заработает - то последнее правило allow all from any to any надо будет заменить на требуемый набор разрешений и запретов.
Код: Выделить всё
# ipfw show
00100 0 0 check-state
00200 0 0 allow ip from any to any via lo0
00300 0 0 deny ip from any to 127.0.0.0/8
00400 0 0 deny ip from 127.0.0.0/8 to any
00500 10 708 allow ip from 10.0.1.0/24 to 10.0.1.0/24 via vlan401
00600 0 0 deny ip from any to 0.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,169.254.0.0/16,192.0.2.0/24 out via vlan119
00700 0 0 deny ip from 0.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,169.254.0.0/16,192.0.2.0/24 to any in via vlan119
00800 0 0 deny ip from any to 224.0.0.0/4,240.0.0.0/4 out via vlan119
00900 0 0 deny ip from 224.0.0.0/4,240.0.0.0/4 to any in via vlan119
01000 0 0 divert 8668 ip from 10.0.1.0/24 to any out via vlan119
01100 0 0 divert 8668 ip from any to 10.0.1.0/24 in recv vlan119
01200 233 27122 allow ip from any to any
01300 0 0 deny ip from any to any
65535 0 0 deny ip from any to any
не работает

Re: "FreeBSD, nat+firewall"
Добавлено: 2010-10-27 21:58:11
sch
Сейчас получается, что у тебя диверт вообще не работает - счетчик на правилах нулевой... давай проверять версии - или natd не запущен, или у него другой номер сокета.
проверь через команду sockstat | grep natd
Re: "FreeBSD, nat+firewall"
Добавлено: 2010-10-28 9:19:29
dmitriy01
sch писал(а):Сейчас получается, что у тебя диверт вообще не работает - счетчик на правилах нулевой... давай проверять версии - или natd не запущен, или у него другой номер сокета.
проверь через команду sockstat | grep natd
Код: Выделить всё
# sockstat | grep natd
root natd 1726 3 div4 *:8668 *:*
root natd 1726 4 dgram -> /var/run/logpriv
Re: "FreeBSD, nat+firewall"
Добавлено: 2010-10-28 10:40:45
sch
Хорошо, будем проверять все с самого начала.
Адрес, маска и шлюз на ноуте?
Дефолтный маршрут на роутере freebsd должен работать через vlan119, а не em0. Чтобы это получить - убери адрес реальной сети с интерфейса em0 и добавь руками дефолтный маршрут
Код: Выделить всё
ifconfig em0 -alias x.x.x.30
route add default x.x.x.17
Проверь, что на роутере freebsd значение sysctl
net.inet.ip.forwarding равно
"1"
Выполни
"/etc/rc.d/natd restart" и посмотри /var/log/messages на тему сообщений о проблемах
Re: "FreeBSD, nat+firewall"
Добавлено: 2010-10-28 12:12:40
dmitriy01
Адрес, маска и шлюз на ноуте?
10.0.1.2
255.255.255.0
10.0.1.254
Дефолтный маршрут на роутере freebsd должен работать через vlan119, а не em0. Чтобы это получить - убери адрес реальной сети с интерфейса em0 и добавь руками дефолтный маршрут
Код: Выделить всё
# netstat -rn
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default xxx.xx.xxx.17 UGS 0 3027 vlan11
10.0.1/24 link#4 UC 0 0 vlan40
10.0.1.2 00:22:15:7a:e4:17 UHLW 1 970 vlan40 833
127.0.0.1 127.0.0.1 UH 0 97 lo0
xx.xx.xxx.16/28 link#3 UC 0 0 vlan11
xxx.xx.xxx.17 00:1c:58:f6:e7:79 UHLW 2 0 vlan11 1178
Код: Выделить всё
2# ifconfig
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=1b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING>
ether 00:13:20:e9:29:b7
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
vlan119: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet xxx.xx.xxx.19 netmask 0xfffffff0 broadcast xxx.xx.xxx.31
ether 00:13:20:e9:29:b7
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
vlan: 119 parent interface: em0
vlan401: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 10.0.1.254 netmask 0xffffff00 broadcast 10.0.1.255
ether 00:13:20:e9:29:b7
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
vlan: 401 parent interface: em0
Проверь, что на роутере freebsd значение sysctl net.inet.ip.forwarding равно "1"
в sysctl.conf было только net.inet.ip.fw.enable: 1
добавил net.inet.ip.fw.forwarding: 1
Выполни "/etc/rc.d/natd restart" и посмотри /var/log/messages на тему сообщений о проблемах
Код: Выделить всё
# /etc/rc.d/natd restart
Stopping natd.
Waiting for PIDS: 599, 599, 599, 599, 599.
Starting natd.
единственное сообщение с WARNING там --
root: /etc/rc.d/sysctl: WARNING: sysctl net.inet.ip.fw.enable: does not exist.
тем не менее в sysctl.conf есть строчка net.inet.ip.fw.enable: 1
результат тот же --
с сервера доступ в инет есть, с ноута - нет.
Re: "FreeBSD, nat+firewall"
Добавлено: 2010-10-28 12:21:17
dmitriy01
крайне смущают две надписи в /var/log/messages
freebsd root: /etc/rc.d/sysctl: WARNING: sysctl net.inet.ip.fw.enable: does not exist
freebsd root: /etc/rc.d/sysctl: WARNING: sysctl net.inet.ip.fw.forwarding: does not exist
Re: "FreeBSD, nat+firewall"
Добавлено: 2010-10-28 12:44:10
dmitriy01
после добавления gateway_enable="YES" в rc.conf
ipfw show выдало следующеe
Код: Выделить всё
# ipfw show
00100 0 0 check-state
00200 82 8832 allow ip from any to any via lo0
00300 0 0 deny ip from any to 127.0.0.0/8
00400 0 0 deny ip from 127.0.0.0/8 to any
00500 6 360 divert 8668 ip from 10.0.1.0/24 to any out via vlan119
00600 0 0 divert 8668 ip from any to *.*.*.17 in via vlan119
00700 257 25317 allow ip from any to any
65535 0 0 deny ip from any to any
Re: "FreeBSD, nat+firewall"
Добавлено: 2010-10-28 13:05:15
dmitriy01
tcpdump -i vlan119 icmp
ping
www.ru с сервера и ping 8.8.8.8 с ноута
Код: Выделить всё
# tcpdump -i vlan119 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on vlan119, link-type EN10MB (Ethernet), capture size 96 bytes
13:56:34.530661 IP x.x.x.19 > google-public-dns-a.google.com: ICMP echo request, id 512, seq 58137, length 40
13:56:34.583213 IP google-public-dns-a.google.com > x.x.x.19: ICMP echo reply, id 512, seq 58137, length 40
13:56:40.031885 IP x.x.x.19 > google-public-dns-a.google.com: ICMP echo request, id 512, seq 59929, length 40
13:56:40.085184 IP google-public-dns-a.google.com > x.x.x.19: ICMP echo reply, id 512, seq 59929, length 40
# tcpdump -i vlan119 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on vlan119, link-type EN10MB (Ethernet), capture size 96 bytes
13:58:11.454822 IP x.x.x.19 > www.ru: ICMP echo request, id 58371, seq 8, length 64
13:58:11.464784 IP www.ru > x.x.x.19: ICMP echo reply, id 58371, seq 8, length 64
13:58:12.457865 IP x.x.x.19 > www.ru: ICMP echo request, id 58371, seq 9, length 64
13:58:13.460911 IP x.x.x.19 > www.ru: ICMP echo request, id 58371, seq 10, length 64
13:58:13.470770 IP www.ru > x.x.x.19: ICMP echo reply, id 58371, seq 10, length 64
13:58:14.463992 IP x.x.x.19 > www.ru: ICMP echo request, id 58371, seq 11, length 64
Re: "FreeBSD, nat+firewall"
Добавлено: 2010-10-28 13:31:04
dmitriy01
Код: Выделить всё
00500 6 360 divert 8668 ip from 10.0.1.0/24 to any out via vlan119
00600 0 0 divert 8668 ip from any to *.*.*.17 in via vlan119
поменял на *.19 и все взлетело
тему можно закрывать, всем помогавшим - огромное спасибо
Re: "FreeBSD, nat+firewall"
Добавлено: 2010-10-28 19:31:18
sch
выводы сделаешь сам?
надо обязательно подчеркнуть где была проблема - хотя бы для себя любимого
по ходу я в одном месте промахнулся, и в одном месте у тебя не было настроено

Re: "FreeBSD, nat+firewall"
Добавлено: 2010-10-28 19:32:39
dmitriy01
sch писал(а):выводы сделаешь сам?
надо обязательно подчеркнуть где была проблема - хотя бы для себя любимого
вывод -- где блин в мануале по настройке была фраза про gateway_enable="YES" в rc.conf ????
я штук пять нашел - ни в одном не было
видимо не те читал
Re: "FreeBSD, nat+firewall"
Добавлено: 2010-10-28 19:34:54
sch
да, gateway_enable это главное, чего не хватало
а я в правиле divert для входящего интернет-трафика указал внутреннюю сеть в качестве адреса назначения, а надо было внешний адрес роутера
Re: "FreeBSD, nat+firewall"
Добавлено: 2010-10-29 9:11:16
dmitriy01
sch писал(а):да, gateway_enable это главное, чего не хватало
а я в правиле divert для входящего интернет-трафика указал внутреннюю сеть в качестве адреса назначения, а надо было внешний адрес роутера
а в мануалах этого не было потому что
gateway_enable="YES"
то же самое что и
в файл /etc/sysctl.conf добавить строчку: net.inet.ip.forwarding=1
но у меня там есть эта строчка
вот бы теперь понять почему не работала она
Re: "FreeBSD, nat+firewall"
Добавлено: 2010-10-29 9:21:15
sch
Разработчики системы в своей работе предполагают, что настройка ОС производится через параметры в /etc/rc.conf
Напрямую в /etc/sysctl.conf параметры устанавливаются редко.
Если ты только начинаешь с FreeBSD, то обязательно потрать время на чтение /etc/defaults/rc.conf и man rc
Re: "FreeBSD, nat+firewall"
Добавлено: 2010-10-29 9:26:07
dmitriy01
sch писал(а):Разработчики системы в своей работе предполагают, что настройка ОС производится через параметры в /etc/rc.conf
Напрямую в /etc/sysctl.conf параметры устанавливаются редко.
писатели мануалов предполагают иначе!
sch писал(а):
Если ты только начинаешь с FreeBSD, то обязательно потрать время на чтение /etc/defaults/rc.conf и man rc
спасибо, обязательно почитаю.
время где бы взять на все это, объемы документации про freebsd нагоняют тоску! мне, к счастью, от нее нужен только роутинг, в основном. (ну и ведение логов всяких)
Re: "FreeBSD, nat+firewall"
Добавлено: 2010-10-31 11:06:17
sch
вот как раз в /etc/defaults/rc.conf ты найдешь массу переменных, управляющих значением sysctl без прямого редактирования /etc/sysctl.conf
а мануалы в интернете пишут люди разной квалификации и опыта - и по большей части как раз с небольшим опытом, только что-то получилось, так на радостях в порыве эйфории пишется how-to "как мне удалось чудом настроить роутинг, хотя я сам не понял, как это получилось!!!"

Re: "FreeBSD, nat+firewall"
Добавлено: 2010-11-01 13:27:12
dmitriy01
sch писал(а):а мануалы в интернете пишут люди разной квалификации и опыта
[подмигивает]
мануал брал вот этот
http://www.lissyara.su/articles/freebsd/tuning/ipfw/
p.s. ловко я отцитировал!

Re: "FreeBSD, nat+firewall"
Добавлено: 2010-11-01 15:28:38
sch
ну во первых, авторство хозяина форума не отменяет мое мнение "мануалы в интернете пишут люди разной квалификации и опыта" [подмигиваю в ответ]
а во вторых статься про настройку ipfw и про роутинг там естественно ничего нет

Re: "FreeBSD, nat+firewall"
Добавлено: 2010-11-18 17:52:21
snorlov
Большинство юзают версии 7 и 8, а ты разбирался с 6.4, слабо богу тебе еще ядерный нат не порекомендовали использовать...