Страница 1 из 1
IPFW - настроить интернет для юзеров через ng0
Добавлено: 2014-10-05 17:47:32
Mushin
Задача: обеспечить юзерам в локальной сети (через 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>
Буду благодарен любой помощи.
Re: IPFW - настроить интернет для юзеров через ng0
Добавлено: 2014-10-05 18:17:29
Alex Keda
Re: IPFW - настроить интернет для юзеров через ng0
Добавлено: 2014-10-05 19:25:44
Гость
Да в
/etc/rc.conf прописано:
и соответственно:
Re: IPFW - настроить интернет для юзеров через ng0
Добавлено: 2014-10-07 12:37:41
Mushin
Это мой ответ, не заметил, что не авторизован.
Гость писал(а):Да в
/etc/rc.conf прописано:
и соответственно:
Re: IPFW - настроить интернет для юзеров через ng0
Добавлено: 2014-10-09 14:38:32
DocenT
Чет какая-то странная конфигурация.
Покажите natd.conf, rc.conf и
Кстати, я у вас правилах не увидел разрешения хождения трафика из сети 10.1.0.0/24 по тунелю
Re: IPFW - настроить интернет для юзеров через ng0
Добавлено: 2014-10-09 22:23:58
snorlov
Надо еще не забыть
1. ipfw поднимается раньше ng0
2. прописывать роутинг на ресурсы провайдера
Re: IPFW - настроить интернет для юзеров через ng0
Добавлено: 2014-10-11 21:04:37
Mushin
DocenT писал(а):Чет какая-то странная конфигурация.
Покажите natd.conf, rc.conf и
Кстати, я у вас правилах не увидел разрешения хождения трафика из сети 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
и все работало. Я наверное чего то не понимаю....
Re: IPFW - настроить интернет для юзеров через ng0
Добавлено: 2014-10-11 21:17:21
Mushin
snorlov писал(а):Надо еще не забыть
1. ipfw поднимается раньше ng0
2. прописывать роутинг на ресурсы провайдера
1. Да, с туннелем есть проблемы во время включения, он не сразу поднимается. Но после
/etc/netstart, запускается (тоже не сразу). Возможно по указанной вами причине, как исправить пока не знаю, поищу инфу...
2. У меня DHCP на интерфейсе к провайдеру, я думал что роутинг получаю по DHCP (или я глупость морожу...?). Без туннеля то работает, если через роутер подключаться... Вы имеете ввиду
defaultrouter в
/etc/rc.conf ? Кстати, у этого провайдера не все модели роутеров корректно работают (например с DIR100 - точно будут проблемы, DIR-615 работает нормально), некоторым приходится в ручную прописывать маршруты. Может это как-то связано с моей проблемой...
Re: IPFW - настроить интернет для юзеров через ng0
Добавлено: 2014-10-13 12:05:30
DocenT
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 дописать
Re: IPFW - настроить интернет для юзеров через ng0
Добавлено: 2014-10-13 12:18:55
DocenT
natd.conf:
юзеры же в инет должны ходить через ng0 --> следовательно на этот интерфейс и надо natd вешать
Re: IPFW - настроить интернет для юзеров через ng0
Добавлено: 2014-10-13 13:18:42
snorlov
Там по существу 2-а ната надо вешить,
первый на rl0 для хождения в локалку провайдера
второй на ng0 для хождения в инет...
Re: IPFW - настроить интернет для юзеров через ng0
Добавлено: 2014-10-13 20:08:20
Mushin
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 дописать
Все сделал, как тут написано. Шлюз, такой, как Вы написали. Пакеты в это правило не попадают, я его "с перепугу" два раза прописал (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. Результата не дало.
Re: IPFW - настроить интернет для юзеров через ng0
Добавлено: 2014-10-13 20:15:26
Mushin
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
Re: IPFW - настроить интернет для юзеров через ng0
Добавлено: 2014-10-15 10:16:25
DocenT
А если вот это правило
Код: Выделить всё
allow ip from 10.1.0.0/24 to 172.16.3.202 out recv rl1 xmit ng0
добавить перед дивертом
А после диверта добавить
еще можно поиграться с
Re: IPFW - настроить интернет для юзеров через ng0
Добавлено: 2014-10-15 18:57:28
Mushin
DocenT писал(а):А если вот это правило
Код: Выделить всё
allow ip from 10.1.0.0/24 to 172.16.3.202 out recv rl1 xmit ng0
добавить перед дивертом
А после диверта добавить
еще можно поиграться с
Все сделал. Правила добавил, 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 поигрался - без изменений.
Re: IPFW - настроить интернет для юзеров через ng0
Добавлено: 2014-10-16 9:35:22
DocenT
а если по логу посмотреть что в это правило попадает
ну можно еще в это правило keep-state добавить
Re: IPFW - настроить интернет для юзеров через ng0
Добавлено: 2014-10-16 12:16:20
guest
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.
Такой вот классический, простой вариант, остальное зависит от того что и как Вы получаете от провайдера.
Re: IPFW - настроить интернет для юзеров через ng0
Добавлено: 2014-10-16 12:56:38
snorlov
guest писал(а):
ng0 - default
rl1 - ваша локалка, default для ваших клиентов
rl0 - локалка провайдера, статический роутинг на локалку провайдера
а в локалку провайдера при поднятой на нее статике пойдут через rl0.
Такой вот классический, простой вариант, остальное зависит от того что и как Вы получаете от провайдера.
Простая маршрутизация не сработает для локалки провайдера, поскольку провайдеру по барабану какие ip юзает в своей сетке клиент, он про них ни слухом, ни духом...
Re: IPFW - настроить интернет для юзеров через ng0
Добавлено: 2014-10-16 14:47:27
guest
snorlov писал(а):guest писал(а):
ng0 - default
rl1 - ваша локалка, default для ваших клиентов
rl0 - локалка провайдера, статический роутинг на локалку провайдера
а в локалку провайдера при поднятой на нее статике пойдут через rl0.
Такой вот классический, простой вариант, остальное зависит от того что и как Вы получаете от провайдера.
Простая маршрутизация не сработает для локалки провайдера, поскольку провайдеру по барабану какие ip юзает в своей сетке клиент, он про них ни слухом, ни духом...
египетская сила, истинно так, sorry (ипать мой лысый череп):
только два ната, на ng0 в интернет и на rl0 в локалку провайдера.
Re: IPFW - настроить интернет для юзеров через ng0
Добавлено: 2014-10-16 16:05:52
ski
Я бы вообще отказался от natd в пользу kernel nat, и ресурсов жрет меньше и настраивается за 10 минут.
Могу свои конфиги выложить домашние, если интересно, задача один в один стояла.
Re: IPFW - настроить интернет для юзеров через ng0
Добавлено: 2014-10-17 11:09:56
Mushin
guest писал(а):
копать в сторону "НАРИСОВАТЬ СХЕМУ и типы подключения к Провайдеру и Ваших клиентов к Вам"
Вот, как-то так, нарисовал...
Re: IPFW - настроить интернет для юзеров через ng0
Добавлено: 2014-10-17 18:47:10
Mushin
DocenT писал(а):а если по логу посмотреть что в это правило попадает
ну можно еще в это правило 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, …
Re: IPFW - настроить интернет для юзеров через ng0
Добавлено: 2014-10-17 18:57:39
Mushin
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"
Re: IPFW - настроить интернет для юзеров через ng0
Добавлено: 2014-10-21 9:05:31
Mushin
Гость писал(а):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"
Чуйка подсказывает, что в этом направлении надо копать. Спасибо за подсказку. По быстрому не получилось - курю маны...