URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 95357
[ Назад ]

Исходное сообщение
"NAT + ядерный IPFW + MPD5 Помогите найти ошибку."

Отправлено Александр , 19-Янв-14 15:17 
Добрый день Коллеги! Помогите разобраться, что происходит с серваком, я в тупике!
Что имеем:
Сервер с двумя сетевыми картами на FreeBsd 9.2 amd 64.
Age0 – локальная сеть
Rl0 – сеть провайдера
Локалка постоянный IP 192.168.1.1 маска 255.255.255.0
Сеть провайдера подключение по DHCP, получаю внутренний IP сети провайдера, dns, gateway
После запуска на rl0 поднимается mpd5 соединение pptp до провайдера, получается реальный IP, добавляться правила IPFW для интерфейса ng0, поднимается на нем NAT.
Проходит все гладко и ровно, но тут начинаются чудеса…
Ping с клиента проходит, DNS обрабатываться, внешние сайты пингуются, но зайти через браузер не получается. Уже передрал все, что можно, но результата ноль! Помогите разобраться, где ошибка!
Конфиги:
Ядро собрано с опциями
options    IPFIREWALL
options    IPFIREWALL_FORWARD
options    IPFIREWALL_VERBOSE
options    IPFIREWALL_VERBOSE_LIMIT=50
options    IPFIREWALL_DEFAULT_TO_ACCEPT
options    IPFIREWALL_NAT
options    ROUTETABLES=2
options    IPDIVERT
options    DUMMYNET
options    LIBALIAS

Rc.conf
hostname="*******.ru"
gateway_enable="YES"
dumpdev="AUTO"
keymap="ru.cp866.kbd"
ifconfig_age0="inet 192.168.1.1  netmask 255.255.255.0"
ifconfig_rl0="DHCP"
inetd_enable="NO"
sshd_enable="YES"
firewall_enable="YES"
firewall_nat_enable="YES"
firewall_script="/etc/firewall.conf"
named_enable="YES"
named_auto_forward="YES"
named_flags="-u bind -c /etc/namedb/named.conf"
webmin_enable="YES"
mpd_enable="YES"
ntpd_enable="YES"
ntpd_program="/usr/local/bin/ntpd"


firewall.conf

#!/bin/sh
exface="rl0"
inface="age0"
in_ip="192.168.1.1"
pre_com="ipfw -q"
$pre_com -f flush

$pre_com add 00100 allow ip from any to any via lo0
$pre_com add 00110 deny ip from any to 127.0.0.0/8
$pre_com add 00120 deny ip from 127.0.0.0/8 to any
$pre_com add 00130 allow ip from any 1701 to me via $exface
$pre_com add 00140 allow ip from me to any 1701 via $exface
$pre_com add 00150 allow ip from any 1723 to me via $exface
$pre_com add 00160 allow ip from me to any 1723 via $exface
$pre_com add 00170 allow ip from any 5005 to me via $exface
$pre_com add 00180 allow ip from me to any 5005 via $exface
$pre_com add 00181 allow all from any 953 to me via $exface
$pre_com add 00182 allow all from me to any 953 via $exface
$pre_com nat 1 config log if $exface reset same_ports deny_in
$pre_com add 1030 nat 1 ip from any to any via $exface
$pre_com add 65000 deny all from any to any

hosts
::1            localhost localhost.ru
127.0.0.1        localhost localhost.ru
192.168.1.1    ******.ru ******
192.168.1.1    ******.ru.
**.***.**.***    ******.ru.

resolv.conf
# Generated by resolvconf
nameserver 127.0.0.1
nameserver 10.0.20.3
nameserver 10.0.20.6


mpd.conf

startup:
    log +ALL -EVENTS -FRAME
    set web iface all 5008
    set user admin admin admin
    set console self 127.0.0.1 5005
    set console open
    set web self 192.168.1.1 5006
    set web open

default:
    load pptp_client
pptp_client:
    create bundle static B1
    set iface route default
    set ipcp ranges 0.0.0.0/0 0.0.0.0/0
    set iface up-script /usr/local/etc/mpd5/up.sh
    set iface down-script /usr/local/etc/mpd5/down.sh
    create link static L1 pptp
    set link action bundle B1
    set auth authname ********
    set auth password *********
    set link disable check-magi
    set link max-redial 0
    set link mtu 1460
    set link keep-alive 20 75
    set pptp peer 10.0.20.9
    set pptp disable windowing
    open

up.sh

#!/bin/sh
pre_com="ipfw -q"
route delete $4
gw=`netstat -rn | awk '$1=="default"{print $2}'`
route add $4 $gw
route delete default
route add default $4
echo $4 > /tmp/mpd_dr
echo $gw > /tmp/mpd_gw
sleep 20


$pre_com add 00190 allow all from внешний ip 53 to any out via  $1
$pre_com add 00191 allow all from any to внешний ip 53 in via $1
$pre_com add 00192 allow all from внешний ip 123 to any out via  $1
$pre_com add 00193 allow all from any to внешний ip 123 in via $1
$pre_com nat 2 config log if $1 reset same_ports deny_in
$pre_com add 01000 nat 2 ip from any to any via $1
$pre_com add 01010 allow all from any to any
/etc/rc.d/named restart
(kldload speaker && /bin/echo -e "l2b.f+.p" > /dev/speaker && kldunload speaker)&

named.conf (настроен для 1 домена)
options {
    hostname "*******.ru";
    directory    "/etc/namedb";
    pid-file    "/var/run/named/pid";
    dump-file    "/var/dump/named_dump.db";
    statistics-file    "/var/stats/named.stats";
    version "unknown";
    listen-on {
        127.0.0.1;
        192.168.1.1; внутренний ip локалки
        10.0.20.55;  ip локальный от провайдера
        **.**.**.**;  внешний ip
        };
    include "/etc/namedb/auto_forward.conf";
};
zone "." {
    type hint;
    file "named.root";
   };
zone "localhost" {
    type master;
    file "master/localhost";
   };
zone "0.0.127.IN-ADDR.ARPA" {
    type master;
    file "master/0.0.127.in-addr.arpa";
};
zone "48.238.91.in-addr.arpa" {
    type master;
    file "master/48.238.91.in-addr.arpa";
    };
zone "*******.ru" {
    type master;
    file "master/********.ru";
    notify yes;
    allow-transfer { **.**.**.**; };
    };
Если буден нужно выложу файлы зон.

Тесты и пинги:
> ifconfig

age0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
    options=c319b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MCAST,WOL_MAGIC,VLAN_HWTSO,LINKSTATE>
    ether 00:1d:60:44:80:f7
    inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255
    inet6 fe80::21d:60ff:fe44:80f7%age0 prefixlen 64 scopeid 0x5
    nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
    media: Ethernet autoselect (1000baseT <full-duplex>)
    status: active
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
    options=2008<VLAN_MTU,WOL_MAGIC>
    ether 00:80:48:46:9b:7e
    inet 10.0.20.55 netmask 0xfffffe00 broadcast 10.0.21.255
    nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
    media: Ethernet autoselect (100baseTX <full-duplex>)
    status: active
ipfw0: flags=8801<UP,SIMPLEX,MULTICAST> metric 0 mtu 65536
    nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
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 0xc
    inet 127.0.0.1 netmask 0xff000000
    nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1400
    inet **.**.**.** --> 192.168.10.1 netmask 0xffffffff
    nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>

> ipfw list

00100 allow ip from any to any via lo0
00110 deny ip from any to 127.0.0.0/8
00120 deny ip from 127.0.0.0/8 to any
00130 allow ip from any 1701 to me via rl0
00140 allow ip from me to any dst-port 1701 via rl0
00150 allow ip from any 1723 to me via rl0
00160 allow ip from me to any dst-port 1723 via rl0
00170 allow ip from any 5005 to me via rl0
00180 allow ip from me to any dst-port 5005 via rl0
00181 allow ip from any 953 to me via rl0
00182 allow ip from me to any dst-port 953 via rl0
00190 allow ip from **.**.**.**  внешний ip 53 to any out via ng0
00191 allow ip from any to **.**.**.**  внешний ip  dst-port 53 in via ng0
00192 allow ip from **.**.**.**  внешний ip  to any out via ng0
00193 allow ip from any to **.**.**.**  внешний ip dst-port 123 in via ng0
01000 nat 2 ip from any to any via ng0
01010 allow ip from any to any
01030 nat 1 ip from any to any via rl0
65000 deny ip from any to any
65535 allow ip from any to any

> ipfw show

00100    874    129190 allow ip from any to any via lo0
00110      0         0 deny ip from any to 127.0.0.0/8
00120      0         0 deny ip from 127.0.0.0/8 to any
00130      0         0 allow ip from any 1701 to me via rl0
00140      0         0 allow ip from me to any dst-port 1701 via rl0
00150     59      3696 allow ip from any 1723 to me via rl0
00160     33      2612 allow ip from me to any dst-port 1723 via rl0
00170      0         0 allow ip from any 5005 to me via rl0
00180      0         0 allow ip from me to any dst-port 5005 via rl0
00181      0         0 allow ip from any 953 to me via rl0
00182      0         0 allow ip from me to any dst-port 953 via rl0
00190    177     21153 allow ip from **.**.**.**  внешний ip  53 to any out via ng0
00191    183     12283 allow ip from any to **.**.**.**  внешний ip  dst-port 53 in via ng0
00192     57      4332 allow ip from **.**.**.**  внешний ip  to any out via ng0
00193     61      4636 allow ip from any to **.**.**.**  внешний ip  dst-port 123 in via ng0
01000  95684  78371714 nat 2 ip from any to any via ng0
01010 186840 161698198 allow ip from any to any
01030    287     29270 nat 1 ip from any to any via rl0
65000    359     26606 deny ip from any to any
65535   1374     95164 allow ip from any to any

> ipfw nat show

nat 2: icmp=0, udp=311, tcp=93, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=404
nat 1: icmp=0, udp=46, tcp=0, sctp=0, pptp=0, proto=1, frag_id=0 frag_ptr=0 / tot=47


> netstat

Active Internet connections
Proto Recv-Q Send-Q Local Address          Foreign Address        (state)
tcp4       0    182 *******.10000       192.168.1.103.61417    ESTABLISHED
tcp4       0      0 10.0.20.55.25934       10.0.20.9.pptp         ESTABLISHED
udp4       0      0 *******.ru..domain  *.*                    
udp4       0      0 localhost.domain       *.*                    
udp4       0      0 10.0.20.55.domain      *.*                    
udp4       0      0 *******.domain      *.*                    
udp4       0      0 *******.ru..ntp     *.*                    
udp4       0      0 localhost.ntp          *.*                    
udp6       0      0 fe80:c::1.ntp          *.*                    
udp6       0      0 localhost.ntp          *.*                    
udp4       0      0 10.0.20.55.ntp         *.*                    
udp6       0      0 fe80:5::21d:60ff.ntp   *.*                    
udp4       0      0 *******.ntp         *.*

> netstat -rn

Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            192.168.10.1       UGS         0     1826    ng0
10.0.0.0/16        10.0.20.1          UGS         0        0    rl0
10.0.20.0/23       link#10            U           0     2467    rl0
10.0.20.55         link#10            UHS         0        0    lo0
91.238.48.224      link#13            UHS         0        0    lo0
127.0.0.1          link#12            UH          0       77    lo0
172.16.0.0/22      10.0.20.1          UGS         0        0    rl0
192.168.1.0/24     link#5             U           0     2357   age0
192.168.1.1        link#5             UHS         0        0    lo0
192.168.10.1       link#13            UH          0        0    ng0

Комп в сети настроен:
IP 192.168.1.15
Dns 192.168.1.1
Шлюз 192.168.1.1
Пингую ya.ru: на локальном компе.
Статистика Ping для 213.180.193.3:
Пакетов: Отправлено 4, получено 4, потеряно 0

Nslookup ya.ru
Address: 192.168.1.1
Не заслуживающий доверия ответ:
Ya.ru
Addresses: 213.180.193.3
        93.158.134.3

Но когда пытаюсь зайти на ya.ru через браузер бесконечно долго крутиться и так не открывает.
Настройки браузер проверял, подключение по локалке, прокси не включено…
Спасайте братцы я в тупике!


Содержание

Сообщения в этом обсуждении
"NAT + ядерный IPFW + MPD5 Помогите найти ошибку."
Отправлено osaleks , 19-Янв-14 15:22 
да забыл добавить

sysctl.conf

net.inet.ip.fw.one_pass=1
net.inet.ip.fw.verbose=1
net.inet.ip.fw.verbose_limit=50



"NAT + ядерный IPFW + MPD5 Помогите найти ошибку."
Отправлено hizel , 19-Янв-14 16:04 
А что gre не надо на rl0 разрешать? И вообще отрубите deny и смотрите tcpdump-ом. И еще set iface enable tcpmssfix впердольте mpd-ешке, кстати он сам умеет в nat в режиме клиента.

"NAT + ядерный IPFW + MPD5 Помогите найти ошибку."
Отправлено osaleks , 19-Янв-14 16:59 
> А что gre не надо на rl0 разрешать? И вообще отрубите deny
> и смотрите tcpdump-ом. И еще set iface enable tcpmssfix впердольте mpd-ешке,
> кстати он сам умеет в nat в режиме клиента.

По поводу gre первый раз слышу, если можно поподробней.
set iface enable tcpmssfix добавлю посмотрим что даст
Про nat в mpd читал но толкового описания как его использовать найти не смог.



"NAT + ядерный IPFW + MPD5 Помогите найти ошибку."
Отправлено hizel , 19-Янв-14 18:20 
> По поводу gre первый раз слышу, если можно поподробней.

man pptp

> Про nat в mpd читал но толкового описания как его использовать найти
> не смог.

не нужно описание, просто работает


"NAT + ядерный IPFW + MPD5 Помогите найти ошибку."
Отправлено михалыч , 19-Янв-14 18:59 
Смотрим фаерволл.
Правило 6500 на deny отрабатывает своё.
Выше, _до_правил_ для nat на allow ничего нет.
А локальную сеть 192.168.1.0/24 выпустить забыли?

Сделайте так. После поднятия mpd добавьте два правила:
ipfw add 2000 allow all from 192.168.1.0/24 to any via age0
ipfw add 2001 allow all from any to 192.168.1.0/24 via age0


"NAT + ядерный IPFW + MPD5 Помогите найти ошибку."
Отправлено osaleks , 19-Янв-14 20:07 
> Смотрим фаерволл.
> Правило 6500 на deny отрабатывает своё.
> Выше, _до_правил_ для nat на allow ничего нет.
> А локальную сеть 192.168.1.0/24 выпустить забыли?
> Сделайте так. После поднятия mpd добавьте два правила:
> ipfw add 2000 allow all from 192.168.1.0/24 to any via age0
> ipfw add 2001 allow all from any to 192.168.1.0/24 via age0

Добавил, работает! Но логики я не понимаю правила нулевые!

> ipfw show

00100   506    70470 allow ip from any to any via lo0
00110     0        0 deny ip from any to 127.0.0.0/8
00120     0        0 deny ip from 127.0.0.0/8 to any
00130     0        0 allow ip from any 1701 to me via rl0
00140     0        0 allow ip from me to any dst-port 1701 via rl0
00150    33     2136 allow ip from any 1723 to me via rl0
00160    20     1676 allow ip from me to any dst-port 1723 via rl0
00170     0        0 allow ip from any 5005 to me via rl0
00180     0        0 allow ip from me to any dst-port 5005 via rl0
00181     0        0 allow ip from any 953 to me via rl0
00182     0        0 allow ip from me to any dst-port 953 via rl0
00190   179    20584 allow ip from 91.238.48.224 53 to any out via ng0
00191   188    12601 allow ip from any to 91.238.48.224 dst-port 53 in via ng0
00192    41     3116 allow ip from 91.238.48.224 123 to any out via ng0
00193    42     3192 allow ip from any to 91.238.48.224 dst-port 123 in via ng0
01000 32363 21887908 nat 2 ip from any to any via ng0
01010 67957 45795803 allow ip from any to any
01030   509    47667 nat 1 ip from any to any via rl0
02000     0        0 allow ip from 192.168.1.0/24 to any via age0
02001     0        0 allow ip from any to 192.168.1.0/24 via age0
65000   413    26438 deny ip from any to any
65535  1434    82033 allow ip from any to any


"NAT + ядерный IPFW + MPD5 Помогите найти ошибку."
Отправлено михалыч , 19-Янв-14 20:16 
ipfw delete 1010
?

"NAT + ядерный IPFW + MPD5 Помогите найти ошибку."
Отправлено osaleks , 19-Янв-14 20:39 
> ipfw delete 1010
> ?

Удалил 1010

Вот результат, вроде все работает, что ещё можете порекомендовать?

> ipfw show

00101   82  11882 allow ip from any to any via lo0
00102    0      0 deny ip from any to 127.0.0.0/8
00103    0      0 deny ip from 127.0.0.0/8 to any
00110    0      0 check-state
00130    0      0 allow ip from any 1701 to me via rl0
00140    0      0 allow ip from me to any dst-port 1701 via rl0
00150    7    576 allow ip from any 1723 to me via rl0
00160    7    740 allow ip from me to any dst-port 1723 via rl0
00170    0      0 allow ip from any 5005 to me via rl0
00180    0      0 allow ip from me to any dst-port 5005 via rl0
00181    0      0 allow ip from any 953 to me via rl0
00182    0      0 allow ip from me to any dst-port 953 via rl0
00190   29   3364 allow ip from 91.238.48.224 53 to any out via ng0
00191   32   2200 allow ip from any to 91.238.48.224 dst-port 53 in via ng0
00192    0      0 allow ip from 91.238.48.224 123 to any out via ng0
00193    3    228 allow ip from any to 91.238.48.224 dst-port 123 in via ng0
01000  391  99925 nat 2 ip from any to any via ng0
01030  976 189267 nat 1 ip from any to any via rl0
02000  473 102816 allow ip from 192.168.1.0/24 to any via age0
02001  204  52986 allow ip from any to 192.168.1.0/24 via age0
65000  175  10359 deny ip from any to any
65535 1206  87578 allow ip from any to any


"NAT + ядерный IPFW + MPD5 Помогите найти ошибку."
Отправлено михалыч , 19-Янв-14 20:52 
> 01000  391  99925 nat 2 ip from any to any via ng0
> 01030  976 189267 nat 1 ip from any to any via rl0
> 02000  473 102816 allow ip from 192.168.1.0/24 to any via age0
> 02001  204  52986 allow ip from any to 192.168.1.0/24 via age0
> 65000  175  10359 deny ip from any to any
> 65535 1206  87578 allow ip from any to any

Счетчики на правилах 2000 и 2001 заработали.
> вроде все работает, что ещё можете порекомендовать?

Ну так внести изменения в конфигурационные файлы.
Добавить в firewall.conf правила 2000 и 2001
и убрать из /usr/local/etc/mpd5/up.sh правило 1010
И контрольный reboot ))


"NAT + ядерный IPFW + MPD5 Помогите найти ошибку."
Отправлено osaleks , 19-Янв-14 21:33 
>[оверквотинг удален]
>> 02000  473 102816 allow ip from 192.168.1.0/24 to any via age0
>> 02001  204  52986 allow ip from any to 192.168.1.0/24 via age0
>> 65000  175  10359 deny ip from any to any
>> 65535 1206  87578 allow ip from any to any
> Счетчики на правилах 2000 и 2001 заработали.
>> вроде все работает, что ещё можете порекомендовать?
> Ну так внести изменения в конфигурационные файлы.
> Добавить в firewall.conf правила 2000 и 2001
> и убрать из /usr/local/etc/mpd5/up.sh правило 1010
> И контрольный reboot ))

Перенёс вроде всё работает! Спасибо!