IPFW - настроить интернет для юзеров через ng0

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Mushin
рядовой
Сообщения: 26
Зарегистрирован: 2008-07-17 8:51:57

IPFW - настроить интернет для юзеров через ng0

Непрочитанное сообщение Mushin » 2014-10-05 17:47:32

Задача: обеспечить юзерам в локальной сети (через rl1) доступ в интернет (через ng0), а так-же доступ к локальным ресурсам провайдера (через rl0). На сервере (FreeBSD) туннель поднят, интернет есть. Использую штатный IPFW, запускаю его модулем. В rc.conf - natd_enable=”YES”, natd_interface=”rl0” (пробовал: natd_interface=”ng0” – ничего не меняет). У юзеров интернета нет. Где копать?
root@server:/usr/home/Mushin # ifconfig

Код: Выделить всё

rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=2008<VLAN_MTU,WOL_MAGIC>
        ether 00:16:11:93:8b:f7
        inet 192.168.7.223 netmask 0xffffff00 broadcast 192.168.7.255
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
rl1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=2008<VLAN_MTU,WOL_MAGIC>
        ether 00:02:44:9d:62:a8
        inet6 fe80::202:44ff:fe9d:62a8%rl1 prefixlen 64 scopeid 0x5
        inet 10.1.0.1 netmask 0xffffff00 broadcast 10.1.0.255
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x6
        inet 127.0.0.1 netmask 0xff000000
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
ipfw0: flags=8801<UP,SIMPLEX,MULTICAST> metric 0 mtu 65536
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1400
        inet 172.17.145.39 --> 172.16.3.202 netmask 0xffffffff
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
root@server:/usr/home/Mushin # ipfw show

Код: Выделить всё

00099  	192  	23404 	allow ip from any to any via lo0
00099    0      	0 	deny ip from any to 127.0.0.0/8
00099    0      	0 	deny ip from 127.0.0.0/8 to any

01000    0      	0 	check-state
01100 	3378 	493000 allow tcp from any to any established

02000   	80   	5162 	divert 8668 ip from 10.1.0.0/24 to any out xmit rl0
02000  	261  	31654 	divert 8668 ip from any to 192.168.7.223 in recv rl0
02000 	1450  	78022 	divert 8668 ip from 10.1.0.0/24 to any out xmit ng0
02000  	136   	8105 	divert 8668 ip from any to 172.17.145.39 in recv ng0

09000  	206  	18844 	allow icmp from any to any icmptypes 0,8,11

09999 	1990 	183394 skipto 10000 ip from any to any via rl0
09999 	1537  	92104	skipto 11000 ip from any to any via rl1
09999 	1555  	81595 	skipto 12000 ip from any to any via ng0
09999    0      	0 	skipto 65000 ip from any to any

10900 	1633 	144310 allow gre from 192.168.7.223 to 192.168.0.7 via rl0
10900  	162  	14785 	allow gre from 192.168.0.7 to 192.168.7.223 via rl0
10910    0      	0 	allow tcp from 192.168.7.223 to 192.168.0.7 via rl0 setup keep-state
10920   83   	5966 	allow ip from 192.168.7.223 to any out xmit rl0
10930   80  	14799 	allow udp from any 53 to any via rl0
10930    0      	0 	allow udp from any to any dst-port 53 via rl0
10950    0      	0 	allow udp from any to any dst-port 123 via rl0
10950    0      	0 	allow udp from any 123 to any via rl0
10950    0      	0 	allow tcp from any to 192.168.7.223 dst-port 21 via rl0
10950    0      	0 	allow tcp from any to 192.168.7.223 dst-port 49152-65535 via rl0
10950    0      	0 	allow tcp from any to 192.168.7.223 dst-port 80 via rl0
10950    0      	0 	allow tcp from any to 192.168.7.223 dst-port 10000 via rl0
10950    0      	0 	allow tcp from any to 192.168.7.223 dst-port 25 via rl0
10950    0      	0 	allow tcp from any to 192.168.7.223 dst-port 110 via rl0
10950    0      	0 	allow tcp from any to 192.168.7.223 dst-port 143 via rl0
10950    0      	0 	allow tcp from any to 192.168.7.223 dst-port 22 via rl0
10999   32   	3534 	skipto 65000 ip from any to any

11905 	1536  	92056 	allow ip from any to any via rl1
11999    0      	0 	skipto 65000 ip from any to any

12905 	1555  	81595 allow ip from any to any via ng0
12999    0      	0 	skipto 65000 ip from any to any

65534   32   	3534 	deny ip from any to any
65535    5    	263 	deny ip from any to any
root@server:/usr/home/Mushin # traceroute 8.8.8.8

Код: Выделить всё

traceroute to 8.8.8.8 (8.8.8.8), 64 hops max, 40 byte packets
 1  172.16.3.202 (172.16.3.202)  0.686 ms  1.561 ms  1.439 ms
 2  172.16.3.100 (172.16.3.100)  0.845 ms  0.555 ms  0.563 ms
 3  188.191.144.46 (188.191.144.46)  0.822 ms  0.734 ms  1.077 ms
 4  188.191.144.2 (188.191.144.2)  0.933 ms  1.581 ms  1.069 ms
 5  46.164.147.141 (46.164.147.141)  16.602 ms  16.142 ms  11.907 ms
 6  google.ua-kiev.datagroup.ua (80.91.170.138)  11.776 ms  11.602 ms  12.423 ms
 7  209.85.252.123 (209.85.252.123)  47.123 ms
    64.233.174.173 (64.233.174.173)  45.983 ms
    209.85.252.123 (209.85.252.123)  47.316 ms
 8  209.85.249.173 (209.85.249.173)  45.702 ms  45.724 ms
    209.85.249.175 (209.85.249.175)  45.860 ms
 9  216.239.48.236 (216.239.48.236)  46.802 ms
    216.239.46.17 (216.239.46.17)  52.388 ms  52.137 ms
10  * * *
11  google-public-dns-a.google.com (8.8.8.8)  52.221 ms  45.981 ms  52.122 ms
На машине юзера:
C:\Users\Admin>tracert 8.8.8.8

Код: Выделить всё

Трассировка маршрута к google-public-dns-a.google.com [8.8.8.8]
с максимальным числом прыжков 30:

  1    <1 мс    <1 мс    <1 мс  SERVER [10.1.0.1]
  2     2 ms    <1 мс    <1 мс  172.16.0.7
  3     1 ms     1 ms     1 ms  172.16.6.11
  4     1 ms     1 ms     1 ms  188.191.144.46
  5     *        *        *     Превышен интервал ожидания для запроса.
  6     *        *        *     Превышен интервал ожидания для запроса.
  7     *        *        *     Превышен интервал ожидания для запроса.
  8     *        *        *     Превышен интервал ожидания для запроса.
  9     *        *     ^C
C:\Users\Admin>
Буду благодарен любой помощи.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35465
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: IPFW - настроить интернет для юзеров через ng0

Непрочитанное сообщение Alex Keda » 2014-10-05 18:17:29

Код: Выделить всё

 sysctl net.inet.ip.forwarding=1
Убей их всех! Бог потом рассортирует...

Гость
проходил мимо

Re: IPFW - настроить интернет для юзеров через ng0

Непрочитанное сообщение Гость » 2014-10-05 19:25:44

Да в /etc/rc.conf прописано:

Код: Выделить всё

gateway_enable="YES"
и соответственно:

Код: Выделить всё

sysctl net.inet.ip.forwarding=1

Mushin
рядовой
Сообщения: 26
Зарегистрирован: 2008-07-17 8:51:57

Re: IPFW - настроить интернет для юзеров через ng0

Непрочитанное сообщение Mushin » 2014-10-07 12:37:41

Это мой ответ, не заметил, что не авторизован.
Гость писал(а):Да в /etc/rc.conf прописано:

Код: Выделить всё

gateway_enable="YES"
и соответственно:

Код: Выделить всё

sysctl net.inet.ip.forwarding=1

DocenT
рядовой
Сообщения: 24
Зарегистрирован: 2012-06-26 17:12:34
Откуда: Рязань

Re: IPFW - настроить интернет для юзеров через ng0

Непрочитанное сообщение DocenT » 2014-10-09 14:38:32

Чет какая-то странная конфигурация.
Покажите natd.conf, rc.conf и

Код: Выделить всё

netstat -nr
Кстати, я у вас правилах не увидел разрешения хождения трафика из сети 10.1.0.0/24 по тунелю
У админа есть все возможные права... ряд невозможных... и еще парочка невероятных...

snorlov
подполковник
Сообщения: 3929
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Re: IPFW - настроить интернет для юзеров через ng0

Непрочитанное сообщение snorlov » 2014-10-09 22:23:58

Надо еще не забыть
1. ipfw поднимается раньше ng0
2. прописывать роутинг на ресурсы провайдера

Mushin
рядовой
Сообщения: 26
Зарегистрирован: 2008-07-17 8:51:57

Re: IPFW - настроить интернет для юзеров через ng0

Непрочитанное сообщение Mushin » 2014-10-11 21:04:37

DocenT писал(а):Чет какая-то странная конфигурация.
Покажите natd.conf, rc.conf и

Код: Выделить всё

netstat -nr
Кстати, я у вас правилах не увидел разрешения хождения трафика из сети 10.1.0.0/24 по тунелю
1. Возможно странная, поучить некому, еще бы узнать что не так и как надо... :) Без туннеля у меня все работало, когда интернет брал через роутер. В правилах убрал все запрещающие правила (временно).
2. natd.conf - у меня отсутствует.
/etc/rc.conf

Код: Выделить всё

mousechar_start="3"
font8x8="cp866-8x8"
font8x14="cp866-8x14"
font8x16="cp866-8x16"
scrnmap="koi8-r2cp866"
keymap="ru.koi8-r"

hostname="server.school3.loc"
ifconfig_rl0="DHCP ether 00:16:11:93:8b:f7"
ifconfig_rl1="inet 10.1.0.1 netmask 255.255.255.0"
#defaultrouter="10.126.1.1"

mpd_enable="YES"

firewall_enable="YES"
firewall_script="/etc/rc.firewall.school3"

gateway_enable="YES"

sshd_enable="YES"
ntpd_enable="YES"

mysql_dbdir="/data/mysql"
mysql_enable="YES"

apache22_enable="YES"

natd_program="/sbin/natd"
natd_enable="YES"
natd_interface="rl0"

dhcpd_enable="YES"
dhcpd_conf="/usr/local/etc/dhcpd.conf"	
dhcpd_flags="-q" 			
dhcpd_iface="10.1.0.1"

slapd_enable="YES"
slapd_flags="-h 'ldapi://%2fvar%2frun%2fopenldap%2fldapi/ ldap://0.0.0.0/ ldap://127.0.0.1/'"
slapd_sockets="/var/run/openldap/ldapi"

#-------------- Enable SAMBA -----------------#
samba_enable="YES"
#---------------------------------------------#

# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="NO"
netstat -nr

Код: Выделить всё

root@server:/usr/home/Mushta # netstat -nr
Routing tables

Internet:
Destination        	Gateway            	Flags    	Refs      Use  	Netif 	Expire
default            		172.16.3.202            UGS           0      	80    	ng0
10.0.0.0/8         	192.168.7.254          UGS           0        	0    	rl0
10.1.0.0/24       	link#5             	       U           	0       	96    	rl1
10.1.0.1           		link#5             	       UHS           0        	0    	lo0
127.0.0.1          	link#6             	       UH             0       	26    	lo0
172.16.3.202      	link#8             	       UH             0        	0    	ng0
172.17.145.39      	link#8             	       UHS           0        	0   	 lo0
192.168.0.0/18     	192.168.7.254          UGS           0      	523    rl0
192.168.7.0/24     	link#4             	       U           	0       	57    	rl0
192.168.7.223      	link#4             	       UHS           0        	0   	 lo0
3. На счет правила, разрешающего хождение по туннелю: Я думал, следующих правил достаточно:

Код: Выделить всё

02000 	1450  	78022 	divert 8668 ip from 10.1.0.0/24 to any out xmit ng0
02000  	136   	8105 	divert 8668 ip from any to 172.17.145.39 in recv ng0
По крайней мере, когда подключал сервер к инету через роутер (без туннеля), то следующие правила пропускали юзеров в интернет:

Код: Выделить всё

02000   	80   	5162 	divert 8668 ip from 10.1.0.0/24 to any out xmit rl0
02000  	261  	31654 	divert 8668 ip from any to 192.168.7.223 in recv rl0
и все работало. Я наверное чего то не понимаю....

Mushin
рядовой
Сообщения: 26
Зарегистрирован: 2008-07-17 8:51:57

Re: IPFW - настроить интернет для юзеров через ng0

Непрочитанное сообщение Mushin » 2014-10-11 21:17:21

snorlov писал(а):Надо еще не забыть
1. ipfw поднимается раньше ng0
2. прописывать роутинг на ресурсы провайдера
1. Да, с туннелем есть проблемы во время включения, он не сразу поднимается. Но после /etc/netstart, запускается (тоже не сразу). Возможно по указанной вами причине, как исправить пока не знаю, поищу инфу...
2. У меня DHCP на интерфейсе к провайдеру, я думал что роутинг получаю по DHCP (или я глупость морожу...?). Без туннеля то работает, если через роутер подключаться... Вы имеете ввиду defaultrouter в /etc/rc.conf ? Кстати, у этого провайдера не все модели роутеров корректно работают (например с DIR100 - точно будут проблемы, DIR-615 работает нормально), некоторым приходится в ручную прописывать маршруты. Может это как-то связано с моей проблемой...

DocenT
рядовой
Сообщения: 24
Зарегистрирован: 2012-06-26 17:12:34
Откуда: Рязань

Re: IPFW - настроить интернет для юзеров через ng0

Непрочитанное сообщение DocenT » 2014-10-13 12:05:30

3. На счет правила, разрешающего хождение по туннелю: Я думал, следующих правил достаточно:
КОД: ВЫДЕЛИТЬ ВСЁ
02000 1450 78022 divert 8668 ip from 10.1.0.0/24 to any out xmit ng0
02000 136 8105 divert 8668 ip from any to 172.17.145.39 in recv ng0
Эти правила только заворачивают трафик в диверт, ходить в тунель они не разрешают.

Попробуйте добавить разрешающие правила для сети 10.1.0.0/24 по тунелю.
Шлюз по умолчанию я так понял у вас появляется после поднятия тунеля и это 172.16.3.202? Поправьте меня если не так.
Попробуйте добавить правило что-то типа

Код: Выделить всё

allow ip from 10.1.0.0/24 to 172.16.3.202 out recv rl1 xmit ng0
И неплохо было бы обзавестись natd.conf'ом примерно такого создержания

Код: Выделить всё

interface <тут написать имя интерфейса>
same_ports
unregistered_only
а в rc.conf дописать

Код: Выделить всё

natd_flags="-f /etc/natd.conf"
У админа есть все возможные права... ряд невозможных... и еще парочка невероятных...

DocenT
рядовой
Сообщения: 24
Зарегистрирован: 2012-06-26 17:12:34
Откуда: Рязань

Re: IPFW - настроить интернет для юзеров через ng0

Непрочитанное сообщение DocenT » 2014-10-13 12:18:55

natd.conf:

Код: Выделить всё

interface ng0
юзеры же в инет должны ходить через ng0 --> следовательно на этот интерфейс и надо natd вешать
У админа есть все возможные права... ряд невозможных... и еще парочка невероятных...

snorlov
подполковник
Сообщения: 3929
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Re: IPFW - настроить интернет для юзеров через ng0

Непрочитанное сообщение snorlov » 2014-10-13 13:18:42

Там по существу 2-а ната надо вешить,
первый на rl0 для хождения в локалку провайдера
второй на ng0 для хождения в инет...

Mushin
рядовой
Сообщения: 26
Зарегистрирован: 2008-07-17 8:51:57

Re: IPFW - настроить интернет для юзеров через ng0

Непрочитанное сообщение Mushin » 2014-10-13 20:08:20

DocenT писал(а): Эти правила только заворачивают трафик в диверт, ходить в тунель они не разрешают.

Попробуйте добавить разрешающие правила для сети 10.1.0.0/24 по тунелю.
Шлюз по умолчанию я так понял у вас появляется после поднятия тунеля и это 172.16.3.202? Поправьте меня если не так.
Попробуйте добавить правило что-то типа

Код: Выделить всё

allow ip from 10.1.0.0/24 to 172.16.3.202 out recv rl1 xmit ng0
И неплохо было бы обзавестись natd.conf'ом примерно такого создержания

Код: Выделить всё

interface <тут написать имя интерфейса>
same_ports
unregistered_only
а в rc.conf дописать

Код: Выделить всё

natd_flags="-f /etc/natd.conf"
Все сделал, как тут написано. Шлюз, такой, как Вы написали. Пакеты в это правило не попадают, я его "с перепугу" два раза прописал (2900-е правило и 12900-е):
root@server:/etc # ipfw show

Код: Выделить всё

00099    8    480 allow ip from any to any via lo0
00099    0      0 deny ip from any to 127.0.0.0/8
00099    0      0 deny ip from 127.0.0.0/8 to any
01000    0      0 check-state
01100 1253 187008 allow tcp from any to any established
02000   10    679 divert 8668 ip from 10.1.0.0/24 to any out xmit rl0
02000   38   4589 divert 8668 ip from any to 192.168.7.223 in recv rl0
02000   96   5802 divert 8668 ip from 10.1.0.0/24 to any out xmit ng0
02000    9   1021 divert 8668 ip from any to 172.17.145.39 in recv ng0
02900    0      0 allow ip from 10.1.0.0/24 to 172.16.3.202 out recv rl1 xmit ng0
09000   56   5164 allow icmp from any to any icmptypes 0,8,11
09999  151  15208 skipto 10000 ip from any to any via rl0
09999  106   7429 skipto 11000 ip from any to any via rl1
09999   98   5895 skipto 12000 ip from any to any via ng0
09999    0      0 skipto 65000 ip from any to any
10900  108  10266 allow gre from 192.168.7.223 to 192.168.0.7 via rl0
10900   10   1425 allow gre from 192.168.0.7 to 192.168.7.223 via rl0
10910    0      0 allow tcp from 192.168.7.223 to 192.168.0.7 via rl0 setup keep-state
10920   10    679 allow ip from 192.168.7.223 to any out xmit rl0
10930   10   1472 allow udp from any 53 to any via rl0
10930    0      0 allow udp from any to any dst-port 53 via rl0
10950    0      0 allow udp from any to any dst-port 123 via rl0
10950    0      0 allow udp from any 123 to any via rl0
10950    0      0 allow tcp from any to 192.168.7.223 dst-port 21 via rl0
10950    0      0 allow tcp from any to 192.168.7.223 dst-port 49152-65535 via rl0
10950    0      0 allow tcp from any to 192.168.7.223 dst-port 80 via rl0
10950    0      0 allow tcp from any to 192.168.7.223 dst-port 10000 via rl0
10950    0      0 allow tcp from any to 192.168.7.223 dst-port 25 via rl0
10950    0      0 allow tcp from any to 192.168.7.223 dst-port 110 via rl0
10950    0      0 allow tcp from any to 192.168.7.223 dst-port 143 via rl0
10950    0      0 allow tcp from any to 192.168.7.223 dst-port 22 via rl0
10999   13   1366 skipto 65000 ip from any to any
11905  106   7429 allow ip from any to any via rl1
11999    0      0 skipto 65000 ip from any to any
12900    0      0 allow ip from 10.1.0.0/24 to 172.16.3.202 out recv rl1 xmit ng0
12905   98   5895 allow ip from any to any via ng0
12999    0      0 skipto 65000 ip from any to any
65534   13   1366 deny ip from any to any
65535   11   1720 deny ip from any to any
Баловался сам с различными вариациями, вплоть до: allow ip from any to any. Результата не дало.

Mushin
рядовой
Сообщения: 26
Зарегистрирован: 2008-07-17 8:51:57

Re: IPFW - настроить интернет для юзеров через ng0

Непрочитанное сообщение Mushin » 2014-10-13 20:15:26

snorlov писал(а):Там по существу 2-а ната надо вешить,
первый на rl0 для хождения в локалку провайдера
второй на ng0 для хождения в инет...
Я к этому же выводу пришел опытным путем. Вот к этим правилам пришел:

Код: Выделить всё

02000   10    679 divert 8668 ip from 10.1.0.0/24 to any out xmit rl0
02000   38   4589 divert 8668 ip from any to 192.168.7.223 in recv rl0
02000   96   5802 divert 8668 ip from 10.1.0.0/24 to any out xmit ng0
02000    9   1021 divert 8668 ip from any to 172.17.145.39 in recv ng0
С этими правилами у меня на клиентской машине:
C:\Users\Admin>tracert 8.8.8.8

Код: Выделить всё

Трассировка маршрута к google-public-dns-a.google.com [8.8.8.8]
с максимальным числом прыжков 30:

  1    <1 мс    <1 мс    <1 мс  SERVER [10.1.0.1]
  2     2 ms    <1 мс    <1 мс  172.16.0.7
  3     1 ms     1 ms     1 ms  172.16.6.11
  4     1 ms     1 ms     1 ms  188.191.144.46
  5     *        *        *     Превышен интервал ожидания для запроса.
  6     *        *        *     Превышен интервал ожидания для запроса.
  7     *        *        *     Превышен интервал ожидания для запроса.
  8     *        *        *     Превышен интервал ожидания для запроса.
  9     *        *     ^C
А если диверт делать только на один интерфейс, то картина другая:

Код: Выделить всё

Трассировка маршрута к google-public-dns-a.google.com [8.8.8.8]
с максимальным числом прыжков 30:

  1    <1 мс    <1 мс    <1 мс  SERVER [10.1.0.1] 
  2     *        *        *     Превышен интервал ожидания для запроса.
  3     *        *        *     Превышен интервал ожидания для запроса.
  4     *        *        *     Превышен интервал ожидания для запроса.
  5     *        *        *     Превышен интервал ожидания для запроса.
  6     *        *     ^C

DocenT
рядовой
Сообщения: 24
Зарегистрирован: 2012-06-26 17:12:34
Откуда: Рязань

Re: IPFW - настроить интернет для юзеров через ng0

Непрочитанное сообщение DocenT » 2014-10-15 10:16:25

А если вот это правило

Код: Выделить всё

allow ip from 10.1.0.0/24 to 172.16.3.202 out recv rl1 xmit ng0
добавить перед дивертом

А после диверта добавить

Код: Выделить всё

allow ip from me to any out via ng0
еще можно поиграться с

Код: Выделить всё

sysctl net.inet.ip.fw.one_pass=1 или 0
У админа есть все возможные права... ряд невозможных... и еще парочка невероятных...

Mushin
рядовой
Сообщения: 26
Зарегистрирован: 2008-07-17 8:51:57

Re: IPFW - настроить интернет для юзеров через ng0

Непрочитанное сообщение Mushin » 2014-10-15 18:57:28

DocenT писал(а):А если вот это правило

Код: Выделить всё

allow ip from 10.1.0.0/24 to 172.16.3.202 out recv rl1 xmit ng0
добавить перед дивертом

А после диверта добавить

Код: Выделить всё

allow ip from me to any out via ng0
еще можно поиграться с

Код: Выделить всё

sysctl net.inet.ip.fw.one_pass=1 или 0
Все сделал. Правила добавил, 1900 - перед дивертом, и 2900 - после диверта. По 2900 пакеты пошли. Но инета это юзерам не прибавило.
root@server:/usr/home/Mushta # ipfw show

Код: Выделить всё

00099    91   11223 allow ip from any to any via lo0
00099     0       0 deny ip from any to 127.0.0.0/8
00099     0       0 deny ip from 127.0.0.0/8 to any
01000     0       0 check-state
01100  8679  412552 allow tcp from any to any established
01900     0       0 allow ip from 10.1.0.0/24 to 172.16.3.202 out recv rl1 xmit ng0
02000    34    2143 divert 8668 ip from 10.1.0.0/24 to any out xmit rl0
02000 11662 1110747 divert 8668 ip from any to 192.168.7.223 in recv rl0
02000   808   43842 divert 8668 ip from 10.1.0.0/24 to any out xmit ng0
02000 11597  639194 divert 8668 ip from any to 172.17.145.39 in recv ng0
02900  4426  247330 allow ip from me to any out via ng0
09000    85    7832 allow icmp from any to any icmptypes 0,8,11
09999 24161 2176092 skipto 10000 ip from any to any via rl0
09999   843   50243 skipto 11000 ip from any to any via rl1
09999 11597  639194 skipto 12000 ip from any to any via ng0
09999     0       0 skipto 65000 ip from any to any
10900 12434 1060178 allow gre from 192.168.7.223 to 192.168.0.7 via rl0
10900 11610 1102782 allow gre from 192.168.0.7 to 192.168.7.223 via rl0
10910     0       0 allow tcp from 192.168.7.223 to 192.168.0.7 via rl0 setup keep-state
10920    36    2619 allow ip from 192.168.7.223 to any out xmit rl0
10930    34    6273 allow udp from any 53 to any via rl0
10930     0       0 allow udp from any to any dst-port 53 via rl0
10950     0       0 allow udp from any to any dst-port 123 via rl0
10950     0       0 allow udp from any 123 to any via rl0
10950     0       0 allow tcp from any to 192.168.7.223 dst-port 21 via rl0
10950     0       0 allow tcp from any to 192.168.7.223 dst-port 49152-65535 via rl0
10950     0       0 allow tcp from any to 192.168.7.223 dst-port 80 via rl0
10950     0       0 allow tcp from any to 192.168.7.223 dst-port 10000 via rl0
10950     0       0 allow tcp from any to 192.168.7.223 dst-port 25 via rl0
10950     0       0 allow tcp from any to 192.168.7.223 dst-port 110 via rl0
10950     0       0 allow tcp from any to 192.168.7.223 dst-port 143 via rl0
10950     0       0 allow tcp from any to 192.168.7.223 dst-port 22 via rl0
10999    47    4240 skipto 65000 ip from any to any
11905   843   50243 allow ip from any to any via rl1
11999     0       0 skipto 65000 ip from any to any
12900     0       0 allow ip from 10.1.0.0/24 to 172.16.3.202 out recv rl1 xmit ng0
12905 11597  639194 allow ip from any to any via ng0
12999     0       0 skipto 65000 ip from any to any
65534    47    4240 deny ip from any to any
65535     3     214 deny ip from any to any
С one_pass поигрался - без изменений.

DocenT
рядовой
Сообщения: 24
Зарегистрирован: 2012-06-26 17:12:34
Откуда: Рязань

Re: IPFW - настроить интернет для юзеров через ng0

Непрочитанное сообщение DocenT » 2014-10-16 9:35:22

а если по логу посмотреть что в это правило попадает

Код: Выделить всё

allow log ip from me to any out via ng0

ну можно еще в это правило keep-state добавить
У админа есть все возможные права... ряд невозможных... и еще парочка невероятных...

guest
проходил мимо

Re: IPFW - настроить интернет для юзеров через ng0

Непрочитанное сообщение guest » 2014-10-16 12:16:20

Mushin писал(а):Задача: обеспечить юзерам в локальной сети (через rl1) доступ в интернет (через ng0), а так-же доступ к локальным ресурсам провайдера (через rl0). На сервере (FreeBSD) туннель поднят, интернет есть. Использую штатный IPFW, запускаю его модулем. В rc.conf - natd_enable=”YES”, natd_interface=”rl0” (пробовал: natd_interface=”ng0” – ничего не меняет). У юзеров интернета нет. Где копать?
Буду благодарен любой помощи.
копать в сторону "НАРИСОВАТЬ СХЕМУ и типы подключения к Провайдеру и Ваших клиентов к Вам"

ng0 - наружу, значит nat вешать на него
ваша локалка - rl1 за NAT'ом, будет выходить в мир через ng0/nat
rl0 - локалка провайдера, достаточно поднять на нее статический роутинг на сервере и КЛИЕНТЫ ВАШЕЙ локалки
будут иметь доступ к ресурсам локалки провайдера (через статику на rl0).

Все остальное зависит от того что и как Вы получаете от провайдера: выход в локальную сеть и поднятие через
mpd - интернета.

Как уже было сказано, можно и два nat'а, но смысл? Рисуйте схему и технологии подключения, все сразу
станет ясно и прозрачно, ну и начните с открытого firewall'а.

ng0 - default
rl1 - ваша локалка, default для ваших клиентов
rl0 - локалка провайдера, статический роутинг на локалку провайдера

пакеты из вашей локалки придут на rl1, далее во все неизвестные сети, пойдут через default -> ng0. а
в локалку провайдера при поднятой на нее статике пойдут через rl0.

Такой вот классический, простой вариант, остальное зависит от того что и как Вы получаете от провайдера.

snorlov
подполковник
Сообщения: 3929
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Re: IPFW - настроить интернет для юзеров через ng0

Непрочитанное сообщение snorlov » 2014-10-16 12:56:38

guest писал(а): ng0 - default
rl1 - ваша локалка, default для ваших клиентов
rl0 - локалка провайдера, статический роутинг на локалку провайдера
а в локалку провайдера при поднятой на нее статике пойдут через rl0.
Такой вот классический, простой вариант, остальное зависит от того что и как Вы получаете от провайдера.
Простая маршрутизация не сработает для локалки провайдера, поскольку провайдеру по барабану какие ip юзает в своей сетке клиент, он про них ни слухом, ни духом...

guest
проходил мимо

Re: IPFW - настроить интернет для юзеров через ng0

Непрочитанное сообщение guest » 2014-10-16 14:47:27

snorlov писал(а):
guest писал(а): ng0 - default
rl1 - ваша локалка, default для ваших клиентов
rl0 - локалка провайдера, статический роутинг на локалку провайдера
а в локалку провайдера при поднятой на нее статике пойдут через rl0.
Такой вот классический, простой вариант, остальное зависит от того что и как Вы получаете от провайдера.
Простая маршрутизация не сработает для локалки провайдера, поскольку провайдеру по барабану какие ip юзает в своей сетке клиент, он про них ни слухом, ни духом...
египетская сила, истинно так, sorry (ипать мой лысый череп):
только два ната, на ng0 в интернет и на rl0 в локалку провайдера.

ski
старшина
Сообщения: 425
Зарегистрирован: 2008-08-25 18:10:44
Откуда: СССР, РФ, Сталинградская область, село Безродное
Контактная информация:

Re: IPFW - настроить интернет для юзеров через ng0

Непрочитанное сообщение ski » 2014-10-16 16:05:52

Я бы вообще отказался от natd в пользу kernel nat, и ресурсов жрет меньше и настраивается за 10 минут.
Могу свои конфиги выложить домашние, если интересно, задача один в один стояла.

Mushin
рядовой
Сообщения: 26
Зарегистрирован: 2008-07-17 8:51:57

Re: IPFW - настроить интернет для юзеров через ng0

Непрочитанное сообщение Mushin » 2014-10-17 11:09:56

guest писал(а): копать в сторону "НАРИСОВАТЬ СХЕМУ и типы подключения к Провайдеру и Ваших клиентов к Вам"
Вот, как-то так, нарисовал...
Схема FreeBSD School3.JPG

Mushin
рядовой
Сообщения: 26
Зарегистрирован: 2008-07-17 8:51:57

Re: IPFW - настроить интернет для юзеров через ng0

Непрочитанное сообщение Mushin » 2014-10-17 18:47:10

DocenT писал(а):а если по логу посмотреть что в это правило попадает

Код: Выделить всё

allow log ip from me to any out via ng0

ну можно еще в это правило keep-state добавить
Включил логирование, keep-state - добавил.
/var/log/security:

Код: Выделить всё

Oct 17 16:43:18 server kernel: ipfw: 2900 Accept ICMP:3.3 172.17.145.39 222.85.83.124 out via ng0
Oct 17 16:43:18 server kernel: ipfw: 2900 Accept ICMP:3.3 172.17.145.39 188.250.161.90 out via ng0
Oct 17 16:43:18 server kernel: ipfw: 2900 Accept ICMP:3.3 172.17.145.39 70.24.16.181 out via ng0
Oct 17 16:43:19 server kernel: ipfw: 2900 Accept ICMP:3.3 172.17.145.39 188.250.161.90 out via ng0
Oct 17 16:43:19 server kernel: ipfw: 2900 Accept ICMP:3.3 172.17.145.39 188.244.224.19 out via ng0
Oct 17 16:43:19 server kernel: ipfw: 2900 Accept ICMP:3.3 172.17.145.39 222.85.83.124 out via ng0
Oct 17 16:43:19 server kernel: ipfw: 2900 Accept ICMP:8.0 192.168.7.223 8.8.8.8 out via ng0
Oct 17 16:43:19 server kernel: ipfw: 2900 Accept ICMP:3.3 172.17.145.39 82.208.100.244 out via ng0
Oct 17 16:43:19 server kernel: ipfw: 2900 Accept ICMP:3.3 172.17.145.39 188.250.161.90 out via ng0
Oct 17 16:43:19 server kernel: ipfw: 2900 Accept ICMP:3.3 172.17.145.39 61.118.154.193 out via ng0
Oct 17 16:43:19 server kernel: ipfw: 2900 Accept TCP 192.168.7.223:65142 217.20.147.94:80 out via ng0
Oct 17 16:43:19 server kernel: ipfw: 2900 Accept TCP 192.168.7.223:65139 217.69.139.59:80 out via ng0
Oct 17 16:43:19 server kernel: ipfw: 2900 Accept TCP 192.168.7.223:65143 94.100.180.216:443 out via ng0
Oct 17 16:43:19 server kernel: ipfw: 2900 Accept ICMP:3.3 172.17.145.39 93.81.141.4 out via ng0
Oct 17 16:43:20 server kernel: ipfw: 2900 Accept TCP 192.168.7.223:65144 94.100.180.216:443 out via ng0
Oct 17 16:43:20 server kernel: ipfw: 2900 Accept ICMP:3.3 172.17.145.39 83.139.136.138 out via ng0
Oct 17 16:43:20 server kernel: ipfw: 2900 Accept ICMP:3.3 172.17.145.39 31.135.77.63 out via ng0
Oct 17 16:43:20 server kernel: ipfw: 2900 Accept TCP 192.168.7.223:65140 94.100.180.228:25 out via ng0
Oct 17 16:43:20 server kernel: ipfw: 2900 Accept ICMP:3.3 172.17.145.39 95.190.70.35 out via ng0
... и так далее...

Решил посмотреть, как у меня диверт ходит, перенумеровал правила:
ipfw show:

Код: Выделить всё

02000      80      5162    divert 8668 ip from 10.1.0.0/24 to any out xmit rl0
02010     261     31654    divert 8668 ip from any to 192.168.7.223 in recv rl0
02050    1450     78022    divert 8668 ip from 10.1.0.0/24 to any out xmit ng0
02060     000      0000    divert 8668 ip from any to 172.17.145.39 in recv ng0

И получил следующую картину:
/var/log/security:

Код: Выделить всё

Oct 17 17:01:03 server kernel: ipfw: 2050 Divert 8668 TCP 10.1.0.11:49600 217.69.139.59:80 out via ng0
Oct 17 17:01:05 server kernel: ipfw: 2010 Divert 8668 P:47 192.168.0.7 192.168.7.223 in via rl0
Oct 17 17:01:05 server kernel: ipfw: 2010 Divert 8668 P:47 192.168.0.7 192.168.7.223 in via rl0
Oct 17 17:01:05 server kernel: ipfw: 2050 Divert 8668 TCP 10.1.0.11:49608 217.69.139.225:80 out via ng0
Oct 17 17:01:05 server kernel: ipfw: 2010 Divert 8668 P:47 192.168.0.7 192.168.7.223 in via rl0
Oct 17 17:01:05 server kernel: ipfw: 2010 Divert 8668 P:47 192.168.0.7 192.168.7.223 in via rl0
Oct 17 17:01:05 server kernel: ipfw: 2000 Divert 8668 UDP 10.1.0.11:53510 192.168.0.2:53 out via rl0
Oct 17 17:01:05 server kernel: ipfw: 2010 Divert 8668 UDP 192.168.0.2:53 192.168.7.223:53510 in via rl0
Oct 17 17:01:05 server kernel: ipfw: 2050 Divert 8668 TCP 10.1.0.11:49609 217.20.147.94:80 out via ng0
Oct 17 17:01:05 server kernel: ipfw: 2050 Divert 8668 TCP 10.1.0.11:49601 78.46.107.144:80 out via ng0
Oct 17 17:01:06 server kernel: ipfw: 2050 Divert 8668 TCP 10.1.0.11:49602 217.20.147.94:80 out via ng0
Oct 17 17:01:06 server kernel: ipfw: 2050 Divert 8668 TCP 10.1.0.11:49603 78.46.107.144:80 out via ng0
Oct 17 17:01:06 server kernel: ipfw: 2010 Divert 8668 P:47 192.168.0.7 192.168.7.223 in via rl0
Oct 17 17:01:06 server kernel: ipfw: 2010 Divert 8668 P:47 192.168.0.7 192.168.7.223 in via rl0
Oct 17 17:01:06 server kernel: ipfw: 2050 Divert 8668 TCP 10.1.0.11:49610 212.42.77.232:443 out via ng0
Oct 17 17:01:07 server kernel: ipfw: 2050 Divert 8668 TCP 10.1.0.11:49605 217.69.139.216:443 out via ng0
Oct 17 17:01:07 server kernel: ipfw: 2010 Divert 8668 P:47 192.168.0.7 192.168.7.223 in via rl0
Oct 17 17:01:07 server kernel: ipfw: 2050 Divert 8668 TCP 10.1.0.11:49606 217.69.139.216:443 out via ng0
Oct 17 17:01:07 server kernel: ipfw: 2050 Divert 8668 TCP 10.1.0.11:49611 217.69.139.225:5190 out via ng0
Oct 17 17:01:07 server kernel: ipfw: 2010 Divert 8668 P:47 192.168.0.7 192.168.7.223 in via rl0
Oct 17 17:01:08 server kernel: ipfw: 2010 Divert 8668 P:47 192.168.0.7 192.168.7.223 in via rl0
Oct 17 17:01:08 server kernel: ipfw: 2050 Divert 8668 TCP 10.1.0.11:49609 217.20.147.94:80 out via ng0
Oct 17 17:01:08 server kernel: ipfw: 2050 Divert 8668 TCP 10.1.0.11:49607 212.42.77.234:443 out via ng0
 
Правило 2060 в лог не попало ни разу. Выходит, что исходящий траффик проходит по правилу 2050, а входящего нет.
Я провел еще один эксперимент, на машине в локальной сети (IP: 10.1.0.11) запустил трассировку маршрута дважды, первый раз – находясь за роутером FreeBSD, который пытаюсь настроить, второй раз, находясь за роутером DLink DIR-615 – через который все работает без проблем. Вот результаты:

1. Через FreeBSD

Код: Выделить всё

C:\Users\Admin>tracert 8.8.8.8
Трассировка маршрута к google-public-dns-a.google.com [8.8.8.8]
с максимальным числом прыжков 30:

  1    <1 мс    <1 мс    <1 мс  SERVER [10.1.0.1]
  2     1 ms    <1 мс     2 ms  172.16.0.7
  3     1 ms     1 ms     1 ms  172.16.6.11
  4     1 ms     1 ms     1 ms  188.191.144.46
  5     *        *        *     Превышен интервал ожидания для запроса.
  6     *        *        *     Превышен интервал ожидания для запроса.
  7     *        *        *     Превышен интервал ожидания для запроса.
  8     *        *        *     Превышен интервал ожидания для запроса.
  9     *        *        *     Превышен интервал ожидания для запроса.
 10     *        *        *     Превышен интервал ожидания для запроса.
 11     *        *        *     Превышен интервал ожидания для запроса.
 12  10.1.0.1  сообщает: Заданный узел недоступен.

Трассировка завершена.

2. Через DLink DIR-615

Код: Выделить всё

C:\Users\Admin>tracert 8.8.8.8

Трассировка маршрута к 8.8.8.8 с максимальным числом прыжков 30

  1     1 ms    <1 мс    <1 мс  Dlink-Router.Dlink [10.1.1.1]
  2     1 ms     1 ms     1 ms  172.16.3.202
  3     3 ms     1 ms     1 ms  172.16.3.100
  4     1 ms     3 ms     1 ms  188.191.144.46
  5     2 ms     3 ms     2 ms  188.191.144.2
  6    12 ms    12 ms    12 ms  46.164.147.141
  7    12 ms    12 ms    12 ms  google.ua-kiev.datagroup.ua [80.91.170.138]
  8    49 ms    49 ms    50 ms  209.85.252.123
  9    49 ms    48 ms    48 ms  209.85.249.173
 10    48 ms    48 ms    48 ms  209.85.244.55
 11     *        *        *     Превышен интервал ожидания для запроса.
 12    47 ms    46 ms    46 ms  google-public-dns-a.google.com [8.8.8.8]
Трассировка завершена.
Во втором варианте, вторая строка содержит адрес шлюза ng0 - 172.16.3.202, а в первом варианте, вторая строка - 172.16.0.7. Выходит, что пакеты идут не через туннель, потому и режутся после: 188.191.144.46, …

Mushin
рядовой
Сообщения: 26
Зарегистрирован: 2008-07-17 8:51:57

Re: IPFW - настроить интернет для юзеров через ng0

Непрочитанное сообщение Mushin » 2014-10-17 18:57:39

ski писал(а):Я бы вообще отказался от natd в пользу kernel nat, и ресурсов жрет меньше и настраивается за 10 минут.
Могу свои конфиги выложить домашние, если интересно, задача один в один стояла.
Сбросьте мне в личку, если не трудно. Спасибо.

Гость
проходил мимо

Re: IPFW - настроить интернет для юзеров через ng0

Непрочитанное сообщение Гость » 2014-10-17 22:44:23

1. Как сделать 2 nat в natd написано в мане.
Каждый экземпляр nat в natd работает на своем divert socket. Для того чтобы их различать есть номера портов (они не имеют отношения к портам tcp/udp). В вашем случае номер порта один - 8668, это не верно.

2. Кроме defaultrouter нужно определить маршрут к сети провайдера. Иначе пакеты будут направлены через default router, соответственно попадут на интернетовский интерфейс и нужные правила divert в ipfw не отработают т.к. в них прописан другой интерфейс. Добавить статический маршрут для теста можно командой: route add 192.168.0.0/16 192.168.7.1
192.168.0.0/16 - заменить на сеть провайдера
192.168.7.1 - заменить на шлюз который был получен по dhcp

в rc.conf прописывается так:
static_routes="isp1"
route_isp1="192.168.0.0/16 192.168.7.1"

Mushin
рядовой
Сообщения: 26
Зарегистрирован: 2008-07-17 8:51:57

Re: IPFW - настроить интернет для юзеров через ng0

Непрочитанное сообщение Mushin » 2014-10-21 9:05:31

Гость писал(а):1. Как сделать 2 nat в natd написано в мане.
Каждый экземпляр nat в natd работает на своем divert socket. Для того чтобы их различать есть номера портов (они не имеют отношения к портам tcp/udp). В вашем случае номер порта один - 8668, это не верно.

2. Кроме defaultrouter нужно определить маршрут к сети провайдера. Иначе пакеты будут направлены через default router, соответственно попадут на интернетовский интерфейс и нужные правила divert в ipfw не отработают т.к. в них прописан другой интерфейс. Добавить статический маршрут для теста можно командой: route add 192.168.0.0/16 192.168.7.1
192.168.0.0/16 - заменить на сеть провайдера
192.168.7.1 - заменить на шлюз который был получен по dhcp

в rc.conf прописывается так:
static_routes="isp1"
route_isp1="192.168.0.0/16 192.168.7.1"
Чуйка подсказывает, что в этом направлении надо копать. Спасибо за подсказку. По быстрому не получилось - курю маны...