Страница 1 из 1

Простой шлюз в интернет, куча способов и все безрезультатные

Добавлено: 2009-10-12 22:17:10
krendelek007
Понимаю, что тема возможно и не имеет права на жизнь, но уже второй день над ней бьюсь и не получается :sorry: :cz2: .
Суть до безобразия простая: Надо раздать интернет на три ПК, которые подключены в локальную сеть и воткнуты в сервер (ОС FreeBSD 7.2).

На сервере 2 интерфейса:
stge0 - смотрит в локальную сеть и имеет IP 192.168.0.1
nfe0 - смотрит в сторону провайдера и получает локальный IP через DHCP

После старта системы через pptp (mpd5) появляется ещё одно соединение ng0, которое в свою очередь уже имеет внешний IP адрес, присвоенный провайдером.
Интернет на самом сервере работает без проблем.

Ядро собрано с опциями:

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

options         IPFIREWALL
options         IPFIREWALL_DEFAULT_TO_ACCEPT
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=4
options         IPDIVERT
options         IPFIREWALL_FORWARD
options         DUMMYNET
rc.conf имеет вид:

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

hostname="server"

# Интерфейсы
ifconfig_nfe0="DHCP"
ifconfig_stge0="inet 192.168.0.1 netmask 255.255.255.0"

# SSH
sshd_enable="YES"

# MPD (PPTP)
mpd_enable="YES"

# Клиент DynDNS
ddclient_enable="YES"

gateway_enable="YES"
firewall_enable="YES"
firewall_type="OPEN"
natd_enable="YES"
natd_interface="nfe0"
# ps ax | grep nat # показывает следующее:

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

  506  ??  Rs     0:00,10 /sbin/natd -dynamic -n nfe0
# ipfw show # показывает следующее:

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

00050  7040  819974 divert 8668 ip4 from any to any via nfe0
00100    52    4786 allow ip from any to any via lo0
00200     0       0 deny ip from any to 127.0.0.0/8
00300     0       0 deny ip from 127.0.0.0/8 to any
65000 12089 1331469 allow ip from any to any
65535     1     352 allow ip from any to any
Компам в локалке дал настройки типа:

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

ip           192.168.0.2 (или другое число до 255)
маска     255.255.255.0
шлюз     192.168.0.1
dns         64.102.255.44
альт. dns 208.67.222.222
Результат отрицательный!!!, комп из локалки не получает ответы на пинги по IP (т.е. даже не беря в счет DNS). Пингую наприме "ya.ru":

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

ping -t 93.158.134.8
Рад буду любой наводке, заранее ОГРОМНОЕ спасибо!

Re: Простой шлюз в интернет, куча способов и все безрезультатные

Добавлено: 2009-10-12 22:23:23
krendelek007
Даже не ожидал, что можно тему из под гостя создать ... (собственно это я тему создал)

Re: Простой шлюз в интернет, куча способов и все безрезультатные

Добавлено: 2009-10-12 22:24:21
paradox
есть такая супер утилита
tcpdump зоветься
всместе с головой = позволяет решить многие проблемы

Re: Простой шлюз в интернет, куча способов и все безрезультатные

Добавлено: 2009-10-12 23:28:14
silent
У тебя не на том интерфейсе натится, у тебя nfe0, а должен быть ng0.

Re: Простой шлюз в интернет, куча способов и все безрезультатные

Добавлено: 2009-10-13 10:26:02
krendelek007
silent писал(а):У тебя не на том интерфейсе натится, у тебя nfe0, а должен быть ng0.
Поставил ng0:
# ps ax | grep nat # уже ничего не показывает

# ipfw show:

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

00050  511  33231 divert 8668 ip4 from any to any via ng0
00100   96   9296 allow ip from any to any via lo0
00200    0      0 deny ip from any to 127.0.0.0/8
00300    0      0 deny ip from 127.0.0.0/8 to any
65000 1266 115501 allow ip from any to any
65535    3    544 allow ip from any to any
И ко всему прочему пропал интернет на самом серваке :unknown: . .... по крайней мере пинги на "google.com" не проходят.

Если посмотреть в ifconfig, то само соединение (ng0) есть и внешний IP провайдером присвоился.

Re: Простой шлюз в интернет, куча способов и все безрезультатные

Добавлено: 2009-10-13 10:33:53
krendelek007
paradox писал(а):есть такая супер утилита
tcpdump зоветься
всместе с головой = позволяет решить многие проблемы
Так как я человек в данной сфере новый и с FreeBSD начал работать не так давно, то думаю, что не смогу воспользоваться вашим ценным советом, так как на данный момент имеется голова, но не имеется в ней большого обилия информации в данной области.

Re: Простой шлюз в интернет, куча способов и все безрезультатные

Добавлено: 2009-10-13 10:37:32
arkan
было чтото подобное
создай конфиг с правилами фаера и конкретно пропиши в firewall_type="/КОНФИГ"
хбз как такое может быть

Re: Простой шлюз в интернет, куча способов и все безрезультатные

Добавлено: 2009-10-13 10:40:12
jammin
Верните НАТ на nfe0 и пропишите в фаерволл еще один диверт через ng0.

Re: Простой шлюз в интернет, куча способов и все безрезультатные

Добавлено: 2009-10-13 11:26:57
krendelek007
jammin писал(а):Верните НАТ на nfe0 и пропишите в фаерволл еще один диверт через ng0.
Вернул, делал так:

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

00040  292   30007 divert 8668 ip4 from any to any via ng0
00050 5091  700109 divert 8668 ip4 from any to any via nfe0
и пробовал менять их местами, результат отрицательный :st:

to arkan:
сейчас буду пробовать ...

p.s. подумал, что может ещё картину прояснит конфиг от mpd5 (скажу сразу, что не совсем понимаю что там значат все строки, но инет на сервере работает!):

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

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
        create link static L1 pptp
        set link action bundle B1
        set auth authname LOGIN
        set auth password PASSWORD
        set link max-redial 0
        set link mtu 1460
        set link keep-alive 20 75
        set pptp peer URL_SERVERA
        set pptp disable windowing
        open

Re: Простой шлюз в интернет, куча способов и все безрезультатные

Добавлено: 2009-10-13 12:54:44
schizoid
отключите фаервол вообще
создайте файл /etc/ipnat.conf
в него впишите следующее

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

map ng0 192.168.0./24 -> 0.0.0.0/32
дальше в /etc/rc.conf добавьте строки:

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

gateway_enable="YES"
ipnat_enable="YES"
ipnat_program="/sbin/ipnat"
ipnat_rules="/etc/ipnat.conf"
далее стартуйте mpd(что бы появился интерфейс ng0)
затем стартуете

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

/etc/rc.d/ipnat start
дальше на тачках которые нужно выпустить в инет прописываете Ип/маску/шлюз(сервер)/ДНС(скорее_всего_провайдер)
все. инет должен работать. при выключенном файерволе!!!!

Re: Простой шлюз в интернет, куча способов и все безрезультатные

Добавлено: 2009-10-13 13:23:16
Kostyan
krendelek007 писал(а):Понимаю, что тема возможно и не имеет права на жизнь, но уже второй день над ней бьюсь и не получается :sorry: :cz2: .
На сервере 2 интерфейса:
stge0 - смотрит в локальную сеть и имеет IP 192.168.0.1
nfe0 - смотрит в сторону провайдера и получает локальный IP через DHCP

Рад буду любой наводке, заранее ОГРОМНОЕ спасибо!
Если необходима и сеть провайдера и интернет, тогда поднимаем 2 ната иначе поднимаем нат на ng0
rc.conf

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

natd_program="/sbin/natd"       # path to natd, if you want a different one.
natd_enable="YES"               # Enable natd (if firewall_enable == YES).
natd_interface="ng0"         # Public interface or IPaddress to use.
natd_flags="-u -s -m -f /etc/natd.conf"         # Additional flags for natd.

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

[code]#!/bin/sh

fwcmd="/sbin/ipfw -q"

EXT1_IF="stge0"
EXT2_IF="ng0"
INT1_IF="nfe0"
N=500
S=10
${fwcmd} -f flush
${fwcmd} add ${N} $(N=$(($N+$S))) pass all from any to any via lo0
${fwcmd} add ${N} $(N=$(($N+$S))) pass all from me to me
${fwcmd} add ${N} $(N=$(($N+$S))) deny all from any to 127.0.0.0/8
${fwcmd} add ${N} $(N=$(($N+$S))) deny ip from 127.0.0.0/8 to any
${fwcmd} add ${N} $(N=$(($N+$S))) divert natd ip from any to IP_ng0_interface in via ${EXT2_IF}
${fwcmd} add ${N} $(N=$(($N+$S))) divert natd ip from 192.168.0.0/24 to not me out via ${EXT2_IF}
#для начала, потом можно ненужное позапрещать.
${fwcmd} add ${N} $(N=$(($N+$S))) allow ip from any to any

Re: Простой шлюз в интернет, куча способов и все безрезультатные

Добавлено: 2009-10-13 13:34:23
krendelek007
schizoid писал(а):отключите фаервол вообще
создайте файл /etc/ipnat.conf
в него впишите следующее

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

map ng0 192.168.0./24 -> 0.0.0.0/32
дальше в /etc/rc.conf добавьте строки:

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

gateway_enable="YES"
ipnat_enable="YES"
ipnat_program="/sbin/ipnat"
ipnat_rules="/etc/ipnat.conf"
далее стартуйте mpd(что бы появился интерфейс ng0)
затем стартуете

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

/etc/rc.d/ipnat start
дальше на тачках которые нужно выпустить в инет прописываете Ип/маску/шлюз(сервер)/ДНС(скорее_всего_провайдер)
все. инет должен работать. при выключенном файерволе!!!!
Огромное спасибо!!! :good:
Ваш способ сработал.
p.s. только там: map ng0 192.168.0.0/24 -> 0.0.0.0/32 забыли поставить нолик (это я пишу на случай, если кто-то после меня столкнется с такой проблемой).

to schizoid, теперь ведь можно отстраивать фаервол, верно?

to Kostyan, в перспективе надо будет и в локальную сеть провайдера вломиться, но пока остановлюсь на этом ... . Но так или иначе спасибо за совет.

Re: Простой шлюз в интернет, куча способов и все безрезультатные

Добавлено: 2009-10-13 13:51:44
schizoid
да 0 забыл, т.к. писал по памяти, апечатка
на счет фаервола - смотрите сами, если у вас нет сетевых сервисов смотрящих наружу, то зачем он вам?