FreeBSD 8.2 + IPFW + Nat

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
ZAPODLO
рядовой
Сообщения: 21
Зарегистрирован: 2011-01-20 7:44:33

FreeBSD 8.2 + IPFW + Nat

Непрочитанное сообщение ZAPODLO » 2011-04-04 11:19:22

Всю голову поломал.
Исходные:
FreeBSD 8.2 (ядро собрано с поддержкой IPFW)
Интерфейсы:
re0 - домашняя сеть 192.0.0.0
vr0 - Провайдер 1 (локальный IP не выдается, через него поднимается PPP для интернет )
tun0 - Интернет от Провайдера 1 (поднят через vr0)
vr1 - Провайдер 2 (Локальный IP выдается DHCP (10.0.0.0), интернета нет)

Требуется:
Машинами из домашней сети 192.0.0.0 выходить в инет через Провайдера 1 tun0
Машинами из домашней сети 192.0.0.0 пользоваться локальными ресурсами Провайдера 2 vr1 (10.0.0.0)

Помогите пожалуйста правильно разрулить.
Последний раз редактировалось f_andrey 2011-04-04 12:53:45, всего редактировалось 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/

BlackJaguar
рядовой
Сообщения: 27
Зарегистрирован: 2009-08-07 9:20:56

Re: FreeBSD 8.2 + IPFW + Nat

Непрочитанное сообщение BlackJaguar » 2011-04-04 12:01:43

ZAPODLO писал(а):Всю голову поломал.
Исходные:
FreeBSD 8.2 (ядро собрано с поддержкой IPFW)
Интерфейсы:
re0 - домашняя сеть 192.0.0.0
vr0 - Провайдер 1 (локальный IP не выдается, через него поднимается PPP для интернет )
tun0 - Интернет от Провайдера 1 (поднят через vr0)
vr1 - Провайдер 2 (Локальный IP выдается DHCP (10.0.0.0), интернета нет)

Требуется:
Машинами из домашней сети 192.0.0.0 выходить в инет через Провайдера 1 tun0
Машинами из домашней сети 192.0.0.0 пользоваться локальными ресурсами Провайдера 2 vr1 (10.0.0.0)

Помогите пожалуйста правильно разрулить.

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

echo "firewall_enable=YES" >>/etc/rc.conf
echo "firewall_script=/etc/ipfw.conf" >>/etc/rc.conf
echo "natd_enable=YES" >>/etc/rc.conf
echo "natd_scripts=/etc/natd.conf" >>/etc/rc.conf
ipfw.conf:

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

#!/bin/sh
fw=/sbin/ipfw -q
local="192.0.0.0/8"
prov="10.0.0.0/8"
isp="{ isp1-gateway-ip, isp1-dns1-ip, isp1-dns2-ip, isp2-gateway-ip, isp2-dns1-ip, isp2-dns2-ip }"
ip_ext="my-static-ip-set-by-isp1"

$fw -f flush
$fw add allow all from any to any via lo0
$fw add allow all from any to any via re0

$fw add divert natd all from $local to any via tun0
$fw add divert natd all from any to $ip_ext via tun0

$fw add allow all from any to any
и вообще, показывайте Ваш netstat -rn при поднятом tun0
Есть вещи на Земле, о друг Горацио, которых наши пацаны не догоняют. (с)

ZAPODLO
рядовой
Сообщения: 21
Зарегистрирован: 2011-01-20 7:44:33

Re: FreeBSD 8.2 + IPFW + Nat

Непрочитанное сообщение ZAPODLO » 2011-04-04 12:14:21

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

zp# netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            213.129.104.4      UGS         0 37920769   tun0
10.0.0.0/24        00:26:5a:06:2e:7d  US          0      712    vr1 =>
10.0.0.0/8         10.66.56.1         UGS         0     2608    vr1
10.66.56.0/21      link#3             U           0      360    vr1
10.66.63.*       link#3             UHS         0        0    lo0
127.0.0.1          link#5             UH          0     1168    lo0
192.168.0.0/24     link#1             U           2 47302426    re0
192.168.0.1        link#1             UHS         0        0    lo0
194.186.60.0/24    00:26:5a:06:2e:7d  US          0        4    vr1
213.129.104.4      link#7             UHS         0        0   tun0
213.129.108.*     127.0.0.1          UH          0        0    lo0
Еще маленько уточнение. Хотелось бы еще по SSH рулить шлюзом из внешки. + Еще виртуалка там крутится, доступ по VNC. То же хотелось бы юзать.

ZAPODLO
рядовой
Сообщения: 21
Зарегистрирован: 2011-01-20 7:44:33

Re: FreeBSD 8.2 + IPFW + Nat

Непрочитанное сообщение ZAPODLO » 2011-04-04 12:37:23

А что делать с DNS? resolv.conf затирается и при поднятии PPP от Провайдер 1 и при запросе DHCP от Провайдер 2.
Отключать в PPP и DHCP запрос DNS и прописывать в resolv.conf вручную DNS обоих провайдеров?

ZAPODLO
рядовой
Сообщения: 21
Зарегистрирован: 2011-01-20 7:44:33

Re: FreeBSD 8.2 + IPFW + Nat

Непрочитанное сообщение ZAPODLO » 2011-04-04 12:50:14

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

isp="{ isp1-gateway-ip, isp1-dns1-ip, isp1-dns2-ip, isp2-gateway-ip, isp2-dns1-ip, isp2-dns2-ip }"
Как прописать, если статически ничего нет? Получается на момент поднятия PPP и от DHCP?

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

ip_ext="my-static-ip-set-by-isp1"
Опять же не статика, а PPP. Статического IP нет, запущен только DynDNS, по нему и коннекчусь.

BlackJaguar
рядовой
Сообщения: 27
Зарегистрирован: 2009-08-07 9:20:56

Re: FreeBSD 8.2 + IPFW + Nat

Непрочитанное сообщение BlackJaguar » 2011-04-04 13:16:40

ZAPODLO писал(а):

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

zp# netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            213.129.104.4      UGS         0 37920769   tun0
10.0.0.0/24        00:26:5a:06:2e:7d  US          0      712    vr1 =>
10.0.0.0/8         10.66.56.1         UGS         0     2608    vr1
10.66.56.0/21      link#3             U           0      360    vr1
10.66.63.*       link#3             UHS         0        0    lo0
127.0.0.1          link#5             UH          0     1168    lo0
192.168.0.0/24     link#1             U           2 47302426    re0
192.168.0.1        link#1             UHS         0        0    lo0
194.186.60.0/24    00:26:5a:06:2e:7d  US          0        4    vr1
213.129.104.4      link#7             UHS         0        0   tun0
213.129.108.*     127.0.0.1          UH          0        0    lo0
Еще маленько уточнение. Хотелось бы еще по SSH рулить шлюзом из внешки. + Еще виртуалка там крутится, доступ по VNC. То же хотелось бы юзать.
погорячился. Вам нужно смотреть вариант с двумя nat-демонами, имхо. Я такой вариант не реализовывал, помочь не смогу.
суть такова: нужно запустить два демона NAT, смаршутизировать трафик в 10-ую сеть и обратно. первым должен сработать NAT в 10-ую сеть и только после этого должно сработать общий NAT в Интернет через prov1
а-ля:
$fw add divert natd1 all from $local to 10.0.0.0/8 via vr1
$fw add divert natd1 all from 10.0.0.0/8 to 10.66.63.* via vr1

$fw add divert natd2 all from $local to any via tun0
$fw add divert natd2 all from any to $ext_ip via tun0

только вот я не уверен, что пакеты, попадая в первый NAT и возвращаясь, не будут попадать во второй NAT. Я даже более уверен, что так и произойдет.

Можно попробовать порешать этот вопрос через PF, в котором я не силен.
Если есть время - разгребайте документацию по двум NAT-демонам. если нет - реализовывайте вариант с одним демоном и пытайтесь подключить второго провайдера на тестовой машине.

Больше навскидку мыслей нет.

если динамическое получение адресов по PPP - то хоть диапазоны прописывайте, сузить их до нужного предела всегда успеется. более того скажу, что DNS и GW у провайдера по-любому статика.
Есть вещи на Земле, о друг Горацио, которых наши пацаны не догоняют. (с)

ZAPODLO
рядовой
Сообщения: 21
Зарегистрирован: 2011-01-20 7:44:33

Re: FreeBSD 8.2 + IPFW + Nat

Непрочитанное сообщение ZAPODLO » 2011-04-04 16:14:43

Спасибо за помощь.