DNS-сервер в локальной сети, отвечающий на запросы из Интерн

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

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

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
udp
рядовой
Сообщения: 20
Зарегистрирован: 2013-06-27 14:43:19

DNS-сервер в локальной сети, отвечающий на запросы из Интерн

Непрочитанное сообщение udp » 2014-11-29 21:21:07

Здравствуйте.
Имеется шлюзовый сервер

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

root@mkfse10:/usr/home/admin2 # uname -a
FreeBSD mkfse10.mk.fse.gov.ua 10.0-RELEASE-p7 FreeBSD 10.0-RELEASE-p7 #2: Thu Aug 28 12:36:18 EEST 2014     admin2@mkfse10.mk.fse.gov.ua:/usr/obj/usr/src/sys/usanov  i386
Три сетевые карты:

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

root@mkfse10:/usr/home/admin2 # ifconfig
bge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=8009b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,LINKSTATE>
        ether 00:14:38:b9:45:a2
        inet 10.115.0.4 netmask 0xffffff80 broadcast 10.115.0.127
        inet 192.168.4.4 netmask 0xffffffff broadcast 192.168.4.4
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=209b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC>
        ether 90:e2:ba:4e:5b:a6
        inet 192.168.4.2 netmask 0xffffff00 broadcast 192.168.4.255
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
bge1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=8009b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,LINKSTATE>
        ether 00:16:35:3b:89:c5
        inet 192.168.123.2 netmask 0xfffffffc broadcast 192.168.123.3
        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>
        inet 127.0.0.1 netmask 0xff000000
bge1 - наружный шлюз (192.168.123.1), смотрит в интернет, физическое подключение осуществлено через другое устройство. Является шлюзом по умолчанию. Менять шлюз по умолчанию нельзя.

bge0 - смотрит в локальную сеть. 10.115.0.4 - шлюз для локальной сети.

em0 - вторая сетевая карта, которая смотрит в Интернет. Подключение через adsl - модем. Модем настроен в режиме роутера. Имеется второй внешний ip-адрес. Адрес сетевой карты - 192.168.4.2, модема - 192.168.4.1 На модеме настроен виртуальный NAT-сервер:

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

Server Name External Port Start External Port End Protocol Internal Port Start Internal Port End Server IP Address Remote Host Remove

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

dns1            53                       53                    TCP/UDP 53                      53                    192.168.4.6        


В локальной сети имеется DNS сервер имеющий два адреса - 10.115.0.6 и 192.168.4.6. Первый адрес отвечает на запросы к DNS серверу первого провайдера, второй отвечает на запросы второго провайдера, того самого, который подключен к модему.

Задача: сделать доступным DNS-сервер доступным для запросов из Интернета, используя второго провайдера, подключенному к модему

Маршруты сервера:

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

root@mkfse10:/usr/home/admin2 # netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            192.168.123.1      UGS         0 23432199   bge1
10.0.0.0/8         10.115.0.126       UGS         0   138971   bge0
10.115.0.0/25      link#1             U           0 14634300   bge0
10.115.0.4         link#1             UHS         0      830    lo0
10.115.0.8/32      10.115.0.6         UGS         0        4   bge0
10.115.1.128/25    10.115.0.126       UGS         0      110   bge0
127.0.0.1          link#4             UH          0 30033277    lo0
192.100.0.0/16     10.115.0.126       UGS         0     7258   bge0
192.168.3.0/24     10.115.0.126       UGS         0    34871   bge0
192.168.4.0/24     link#2             U           0   696917    em0
192.168.4.2        link#2             UHS         0     1685    lo0
192.168.4.4        link#1             UHS         0     1926    lo0 =>
192.168.4.4/32     link#1             U           0        0   bge0
192.168.4.6/32     10.115.0.6         UGS         0     3034   bge0
192.168.123.0/30   link#3             U           0     6917   bge1
192.168.123.2      link#3             UHS         0       24    lo0
213.130.11.113     192.168.4.2        UHS         0       22    em0
Запрос к серверу формирую через сайт http://network-tools.com
Основные параметры запроса:
http://network-tools.com/nslook/Default ... 18&go.y=11

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

http://network-tools.com
domain fse.mk.ua
server 213.130.11.113  
port 53


67.222.132.198 is a non-cached DNS Server
 
DNS query for fse.mk.ua failed: Timed out

-- end -- 


Запрос не проходит, смотрим на карте, которая подключена к Интернету через второго провайдера, видим что запрос приходит, но ответа на сетевой карте нет:

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

root@mkfse10:/usr/home/admin2 # tcpdump -n -p -i em0 port 53
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on em0, link-type EN10MB (Ethernet), capture size 65535 bytes
capability mode sandbox enabled
18:57:31.578398 IP 67.222.132.193.50715 > 192.168.4.6.53: 0+ ANY? fse.mk.ua. (27)
18:57:37.341952 IP 67.222.132.193.51770 > 192.168.4.6.53: 0+ ANY? fse.mk.ua. (27)
^C
2 packets captured
821 packets received by filter
0 packets dropped by kernel
Смотрим, что приходит на карту локальной сети, видим, что DNS сервер отвечает на запросы:

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

root@mkfse10:/usr/home/admin2 # tcpdump -n -p -i bge0 port 53 and \(host 67.222.132.193 or host 192.168.4.6 or host 192.168.4.2 or host 192.168.4.1\)
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on bge0, link-type EN10MB (Ethernet), capture size 65535 bytes
capability mode sandbox enabled
18:58:23.750082 IP 67.222.132.193.52328 > 192.168.4.6.53: 0+ ANY? fse.mk.ua. (27)
18:58:23.750256 IP 192.168.4.6.53 > 67.222.132.193.52328: 0* 9/0/2 A 213.130.11.113, NS ns2.trifle.net., NS ns0.fse.mk.ua., NS dns.wildpark.net., NS ns2.torola.mk.ua., NS ns0.xname.org., SOA, MX fse.mk.ua. 10, TXT "v=spf1 mx ip4:213.130.11.113 -all" (333)
18:58:31.630799 IP 67.222.132.193.60840 > 192.168.4.6.53: 0+ ANY? fse.mk.ua. (27)
18:58:31.630971 IP 192.168.4.6.53 > 67.222.132.193.60840: 0* 9/0/2 A 213.130.11.113, NS ns2.trifle.net., NS ns0.fse.mk.ua., NS dns.wildpark.net., NS ns2.torola.mk.ua., NS ns0.xname.org., SOA, MX fse.mk.ua. 10, TXT "v=spf1 mx ip4:213.130.11.113 -all" (333)
^C
4 packets captured
828 packets received by filter
0 packets dropped by kernel
Поскольку шлюз по умолчанию 192.168.123.1, то логично предположить, что на него отправляется весь трафик. Прописываем правило для ipfw, которое перенаправляет пакеты на наружный ip адрес.

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

root@mkfse10:/usr/home/admin2 # ipfw 1399 add fwd 213.130.11.113 ip from 192.168.4.6 to any
01399 fwd 213.130.11.113 ip from 192.168.4.6 to any
Повторяем dns-запрос, смотрим, что происходит с трафиком на сетевом адаптере, но видим, что результата нет:

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

root@mkfse10:/usr/home/admin2 # tcpdump -n -p -i em0 port 53
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on em0, link-type EN10MB (Ethernet), capture size 65535 bytes
capability mode sandbox enabled
19:02:00.753082 IP 67.222.132.193.64056 > 192.168.4.6.53: 0+ ANY? fse.mk.ua. (27)
^C
1 packet captured
152 packets received by filter
0 packets dropped by kernel
Убеждаемся, что пакеты не ушли на шлюз по умолчанию:

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

root@mkfse10:/usr/home/admin2 # tcpdump -n -p -i bge1 port 53 and \(host 67.222.132.193 or host 192.168.4.6 or host 192.168.4.2 or host 192.168.4.1\)
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on bge1, link-type EN10MB (Ethernet), capture size 65535 bytes
capability mode sandbox enabled
^C
0 packets captured
1124 packets received by filter
0 packets dropped by kernel
root@mkfse10:/usr/home/admin2 #
Проверяем, что добавленное правило работает и пересылает пакеты:

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

root@mkfse10:/usr/home/admin2 # ipfw show
00100  586011 2192702040 allow ip from any to any via lo0
01000      62       2772 deny tcp from not 217.77.216.0/21 to me dst-port 22 in via bge1
01100      19        912 deny tcp from not table(2) to me dst-port 1723 via bge1
01200      37       1632 deny tcp from any to me dst-port 3306 via bge1
01300      61       2940 deny tcp from not 217.77.223.146 to me dst-port 80 via bge1
01309     964      57840 deny tcp from not table(5) to any dst-port 25 out via bge1
01399       4       1444 fwd 213.130.11.113 ip from 192.168.4.6 to any
01401   10700     874190 fwd 217.77.208.254,53 ip from 10.115.0.6 53 to any
01401       0          0 fwd 217.77.208.254,53 ip from 10.115.0.6 53 to any
04900  198027   28625977 divert 8665 ip from table(8) to 192.168.4.1 out via em0
04901  197760   48913571 divert 8665 ip from 192.168.4.1 to 192.168.4.2 in via em0
05000 2856920  838277738 divert 8668 ip from any to any via bge1
05202       0          0 check-state
05802 1834113  605969606 allow tcp from me to any out via bge1 keep-state
05902    6049     338744 allow icmp from me to any out via bge1 keep-state
06002  381872   48837487 allow udp from me to any out via bge1 keep-state
06102       0          0 allow gre from me to any out via bge1 keep-state
06202 1869578  494770948 allow tcp from any to any in via bge0 keep-state
06302  652439   83004000 allow udp from any to any in via bge0 keep-state
06402     146      12264 allow icmp from any to any in via bge0 keep-state
06502   28802    2764009 allow tcp from any to any out via bge0 keep-state
06602   22816    4695672 allow udp from any to any out via bge0 keep-state
06702   74315    5756286 allow icmp from any to any out via bge0 keep-state
06802       0          0 allow tcp from any to any out via bge1 keep-state
06902       0          0 allow udp from any to any out via bge1 keep-state
07002   32282    2660188 allow icmp from any to any via bge1
20100  295023   33512847 allow tcp from any to any
20110   10414     764954 allow udp from any to any
20120       0          0 allow gre from any to any
20220      21       1692 allow ip from any to any keep-state
65535       0          0 deny ip from any to any
root@mkfse10:/usr/home/admin2 #
Пакеты по правилу ходят, но куда-то деваются. Пробовал маскировать пакеты которые идут с модема, но результат аналогичный:

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

04950     20      1100 divert 8666 ip from any to 192.168.4.6 dst-port 53 out
04954      7      2527 skipto 5001 ip from 192.168.4.6 to 192.168.4.2
05000 691580 555283122 divert 8668 ip from any to any via bge1
05003      5      1805 fwd 192.168.4.2 ip from 192.168.4.6 to 192.168.4.2
05004    135     19566 divert 8666 ip from 192.168.4.2 to 192.168.4.1
Кто встречался с подобной задачей? У меня все работало, когда модем был подключен к компьютеру, который был подключен к одному провайдеру, то внешние запросы проходили. Дайте, хоть направление, куда смотреть и будет ли такая система работать? Вторую неделю бьюсь, не получается. Спросить особо не у кого, решил выложить запрос на форум.

Хостинговая компания 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/

udp
рядовой
Сообщения: 20
Зарегистрирован: 2013-06-27 14:43:19

Re: DNS-сервер в локальной сети, отвечающий на запросы из Ин

Непрочитанное сообщение udp » 2014-12-09 18:34:20

Сам поставил вопрос, сам на него и отвечу.
На модеме перенастраиваем виртуальный сервер (НАТ), вместо 192.168.4.6 настраиваем 10.115.2.5

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

Server Name         - dns
External Port Start - 53
External Port End   - 53
Protocol                 - TCP/UDP
Internal Port Start   - 53
Internal Port End     - 53
Server IP Address    - 10.115.2.5
Remote Host - 
На DNS-сервер "вешаем" дополнительный адрес 10.115.2.5.
Модему так же присваиваем альтернативный адрес 10.115.2.1
Прописываем на модеме маршруты:

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

Destination  Subnet Mask        Gateway       Interface Remove 
10.115.0.0   255.255.255.128  192.168.4.2 br0  
10.115.2.0   255.255.255.0     10.115.2.2   br0  
10.115.2.2   255.255.255.255  192.168.4.2 br0  
10.115.2.5   255.255.255.255    10.115.2.2   br0  
Маршруты надо прописать на шлюзовом сервере и DNS-сервере.

На шлюзовый сервер добавляем правило:
ipfw 1401 add fwd 10.115.2.1,53 ip from 10.115.2.5 53 to any

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

01401      18       6566 fwd 10.115.2.1,53 ip from 10.115.2.5 53 to any
После этого все заработало. Не знаю, почему компьютеру не подходил шлюз 192.168.4.1, на этот вопрос пусть отвечают эксперты.
Заработала и дополнительное задание, пускать некоторых пользователей в Интернет через дополнительного провайдера. Добавил правила (в них нет ничего нового, но без 10.115.2.1 не работало):

ipfw add 01500 divert 8666 ip from table\(9\) to any
ipfw add 01510 divert 8666 ip from any to 192.168.4.2
ipfw add 01520 fwd 10.115.2.1 ip from 192.168.4.2 to any

В таблице 9 перечисляются ip адреса тех, кто будет ходить в Интернет через другого провайдера