ipfw+natd+tun0

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

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

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
NR
проходил мимо

ipfw+natd+tun0

Непрочитанное сообщение NR » 2010-06-21 17:51:22

Помогите, пожалуйса!
Есть комп FreeBSD_8+3g modem(работает) Нужно открыть доступ в инет для 3 WinXP.
ppp.conf:

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

default:
 set log Phase Chat LCP IPCP CCP tun command
 ident user-ppp VERSION (built COMPILATIONDATE)
 enable dns

megafon:
 set device /dev/cuaU0.0
 set speed 460800

 set dial "\"\" \
     AT OK \
     AT OK \
     ATS0=0 OK \
     AT OK \
     AT&FE0V1X1&D2&C1S0=0 OK \
     AT OK \
     AT+CGDCONT=1,\\\"IP\\\",\\\"internet\\\" OK \
     ATDT*99# CONNECT"

 set login
 set authname "mobile"
 set authkey "internet"

 disable ipv6cp
 disable pap
 disable chap


 set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
 add default HISADDR

Собрал ядро:

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

options   IPFIREWALL
options   IPFIREWALL_VERBOSE
options   IPFIREWALL_VERBOSE_LIMIT=100
options   IPFIREWALL_FORWARD
options   IPDIVERT
options   DUMMYNET
Прописал rc.conf:

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

hostname=bsd.ooo.loc
ifconfig_sk0 = " inet 192.168.0.6 netmask 255.255.255.0"

gateway_enable="YES"
ppp_enable="YES"
ppp_mode="ddial"
ppp_profile="providername"
natd_enable="YES"
natd_interface="tun0"
natd_flags="-dynamic -f /etc/natd.conf"
firewall_enable="YES"
firewall_script="/etc/my.firewall"
Написал по инструкции my.firewall:

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

#!/bin/sh
#########################
# FreeBSD firewall script
#########################
# Основные переменные
# -------------------
# Путь к команде ipfw в системе
# Обычно всегда без изменений
# Совет: не убирайте "-q", если
# работаете удаленно по ssh
fw="/sbin/ipfw -q"
# Внутренний сетевой интерфейс
inif="sk0"
# Внешний сетевой интерфейс
outif="tun0"
# Локальный IP адрес сервера
inip="192.168.0.6"
# IP адрес, получаемый от провайдера
# после иннициализации PPP соединения
outip="10.0.0.2"
# Адресация локальной сети
innet="192.168.0.0/24"
# IP адрес в локальной, на который
# проброшен порт RDP
admin="192.168.0.1"
#
##### Начнем-с... #####
# Сброс всех правил
${fw} -f flush
# Описываем таблицы (предварительно,
# сбрасывая их, чтобы не повторялись),
# в которых задаем список хостов/сетей:
# - для доступа по SSH
${fw} -f table 0 flush
${fw} table 0 add 193.391.193.391
${fw} table 0 add 193.391.193.394
${fw} table 0 add 193.391.193.396
# - для доступа по FTP
${fw} -f table 1 flush
${fw} table 1 add 154.451.154.451
${fw} table 1 add 154.451.154.452
${fw} table 1 add 154.451.154.453
# - для доступа по RDP к той машине,
# на которую проброшен порт RDP
${fw} -f table 2 flush
${fw} table 2 add 142.241.143.341
${fw} table 2 add 142.241.143.343
#
##### Установки для localhost'а ####
${fw} add allow all from any to any via lo0
# Два нижеследующих правила - классика.
# Потому я тоже их сюда вставляю.
# Работают может быть только в одном случае:
# "ping -S 127.0.0.1 XXX.XXX.XXX.XXX".
# При каких условиях еще можно увидеть их
# срабатывание, я, честно говоря, не представляю.
${fw} add deny log all from any to 127.0.0.0/8
${fw} add deny log all from 127.0.0.0/8 to any
# Далее, создаем похожие классические запреты,
# при этом фиксируем все совпадения в лог-файле:
# - запрещаем автоконфигуренную сеть
# (адрес которой, обычно присваивает машина
# сама себе, если ей не задать настройки вручную,
# и не включить в сети DHCP сервер)
${fw} add deny log ip from any to 169.254.0.0/16 in via ${outif}
# - запрещаем частные сети на внешнем интерфейсе
${fw} add deny log ip from any to 0.0.0.0/8 in via ${outif}
${fw} add deny log ip from any to 192.168.0.0/16 in via ${outif}
${fw} add deny log ip from any to 172.16.0.0/12 in via ${outif}
${fw} add deny log ip from any to 10.0.0.0/8 in via ${outif}
# - запрещаем мультикаст запросы на внешнем интерфейсе
${fw} add deny log ip from any to 240.0.0.0/4 in via ${outif}
# - запрещаем фрагментированные ICMP запросы -
# иногда выручает от некоторых видов атак
${fw} add deny log icmp from any to any frag
# - запрещаем мультикастовые ICMP запросы на внешнем интерфейсе
${fw} add deny log icmp from any to 255.255.255.255 in via ${outif}
${fw} add deny log icmp from any to 255.255.255.255 out via ${outif}
#
##### Запускаем NAT ####
${fw} add divert natd all from ${innet} to any out via ${outif}
${fw} add divert natd all from any to ${outip} in via ${outif}
#
# Разрешаем первым делом все уже установленные соединения
${fw} add allow tcp from any to any via ${outif} established
# Разрешаем нашему серверу устанавливать
# tcp соединения в любом направлении
${fw} add allow tcp from ${inip},${outip} to any out xmit ${outif} setup
# Разрешаем трафик из локальной сети на
# внутреннем интерфейсе
${fw} add allow all from ${innet} to any out via ${inif}
${fw} add allow all from any to ${innet} in via ${inif}
# Разрешаем только правильные ICMP запросы
${fw} add allow icmp from any to any icmptypes 0,3,8,11
# Посылаем ответ RESET на попытку получить информацию
# от сервиса идентификации
${fw} add reset log tcp from any to any 113 in recv ${outif}
#
##### Правила для UDP протокола ####
#
# - для сервера
# Разрешаем все исходящие UDP запросы с самого сервера
# Без этого не работают такие команды как traceroute
# Хотя, как вариант, можно обойтись и без этого если
# использовать traceroute -P icmp
${fw} add allow udp from ${outip} to any out via ${outif}
# Разрешаем входящие DNS запросы к нашему DNS серверу
# если конечно таковой испольуется на этой машине.
${fw} add allow udp from any to ${outip} 53 in via ${outif}
# Разрешаем ответы от DNS серверов на запросы
# от нашего хоста.
${fw} add allow udp from any 53 to ${outip} in via ${outif}
# Разрешаем ответы от серверов времени на запросы
# от нашего хоста
${fw} add allow udp from any 123 to ${outip} in via ${outif}
#
# - для локальной сети
# Разрешаем DNS запросы/ответы для всей сети
${fw} add allow udp from ${innet} to any 53
${fw} add allow udp from any 53 to ${innet}
# Разрешаем запросы/ответы к серверам времени для всей сети
${fw} add allow udp from ${innet} to any 123
${fw} add allow udp from any 123 to ${innet}
#
# Если у нас на маршрутизаторе запущены
# определенные сервисы, прописываем правила
# для доступа к ним с внешнего мира
# - разрешаем tcp соединения к DNS серверу -
# данное правило добавлять не нужно, если на
# Вашем DNS сервере нет какой-либо зоны, которую
# он должен отдавать другим (вторичным) DNS.
# Другими словами, данное правило необходимо,
# для того, чтобы не было проблем с запросом dig AXFR
${fw} add allow tcp from any to ${outip} 53 in via ${outif} setup
# - разрешаем доступ к WWW серверу (если он конечно есть)
${fw} add allow tcp from any to ${outip} 80 in via ${outif} setup
# - разрешаем "активный" FTP доступ к серверу,
# но только для хостов, внесенных в table(1)
${fw} add allow tcp from table\(1\) to ${outip} 20,21 in via ${outif} setup
# - разрешаем "пассивный" FTP доступ
# но только для хостов, внесенных в table(1)
${fw} add allow tcp from table\(1\) to ${outip} 49152-65535 via ${outif}
# - разрешаем доступ к SMTP серверу,
# естественно, если он у нас используется
${fw} add allow tcp from any to ${outip} 25 in via ${outif} setup
# - разрешаем SSH доступ к серверу, но
# только для хостов, внесенных в table(0)
${fw} add allow tcp from table\(0\) to ${outip} 555 in via ${outif} setup
#
##### Правила для проброшенных портов ####
# Разрешаем доступ по RDP на машину 192.168.0.100,
# но только для хостов, внесенных к table(2)
${fw} add allow tcp from table\(2\) 1024-65535 to ${admin} 3389 in via ${outip}
${fw} add allow tcp from table\(2\) 1024-65535 to ${admin} 3389 out via ${inif}
${fw} add allow tcp from ${admin} 3389 to table\(2\) 1024-65535 in via ${inif}
${fw} add allow tcp from ${admin} 3389 to table\(2\) 1024-65535 out via ${outif}
#
##### И наконец, пропускаем в Интернет локальную сеть #####
${fw} add allow tcp from ${innet} to any in via ${inif}
${fw} add allow tcp from any to ${innet} out via ${inif}
# Правило, для работы "активного" FTP доступа из локальной сети
${fw} add allow tcp from any 20 to ${innet} in via ${outif}
##### Последнее правило, для занесения в журнал
##### всех остальных (обычно запрещенных) пакетов.
${fw} add 65534 deny log all from any to any
##### END #####
Перегрузился и получил:(((

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

/home/nrv/>>ping ya.ru
ping: cannot resolve ya.ru: Host name lookup failure

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

/home/nrv/>>natd
Loading /lib/libalias_cuseeme.so
Loading /lib/libalias_ftp.so
Loading /lib/libalias_irc.so
Loading /lib/libalias_nbt.so
Loading /lib/libalias_pptp.so
Loading /lib/libalias_skinny.so
Loading /lib/libalias_smedia.so
natd: instance default: aliasing address not given

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

/home/nrv/>>netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            10.0.0.2           UGS         0      212   tun0
10.0.0.2           link#4             UHS         0        0   tun0
10.211.208.81      link#4             UHS         0        0    lo0
127.0.0.1          link#3             UH          0        8    lo0
192.168.0.0/24     link#1             U           1     2917    sk0
192.168.0.6        link#1             UHS         0        8    lo0

Internet6:
Destination                       Gateway                       Flags      Netif Expire
::1                               ::1                           UH          lo0
fe80::%lo0/64                     link#3                        U           lo0
fe80::1%lo0                       link#3                        UHS         lo0
ff01:3::/32                       fe80::1%lo0                   U           lo0
ff02::%lo0/32                     fe80::1%lo0                   U           lo0

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

/etc/ppp/>>ifconfig
sk0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=b<RXCSUM,TXCSUM,VLAN_MTU>
        ether 00:11:2f:2b:29:f8
        inet 192.168.0.6 netmask 0xffffff00 broadcast 192.168.0.255
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
rl0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=8<VLAN_MTU>
        ether 00:a0:00:05:aa:7e
        media: Ethernet autoselect
        status: no carrier
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=3<RXCSUM,TXCSUM>
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
        inet6 ::1 prefixlen 128
        inet 127.0.0.1 netmask 0xff000000
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1500
        inet 10.211.208.81 --> 10.0.0.2 netmask 0xffffff00
        Opened by PID 357
resolv.conf

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

domain  otpo.loc
nameserver 10.78.72.44
nameserver 10.78.72.20
Сорри за длинный пост, хотел все показыть..
Подскажите чайнику, в чем тут может быть дело и как заставить работать?
P.S. Неодходим ли параметр default_router и какой ip указывать в my_firewall в качестве адреса получаемого от провайдера- он ведь постоянно меняется

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

Аватара пользователя
Gendos
лейтенант
Сообщения: 801
Зарегистрирован: 2009-02-18 14:30:39
Откуда: АЗиОПА
Контактная информация:

Re: ipfw+natd+tun0

Непрочитанное сообщение Gendos » 2010-06-21 20:28:44

Классика жанра. Копипастили?
Обнулите все правила дайте команду на разрешение всем и всё. Пропингуйте DNS.
Да как удав! Работаю.

NR
проходил мимо

Re: ipfw+natd+tun0

Непрочитанное сообщение NR » 2010-06-22 10:37:40

сбросил, разрешил, все пингуется, нат не работает :((( какой IP внешнего интерфейса?

PiterPen747
рядовой
Сообщения: 11
Зарегистрирован: 2009-02-21 16:41:31
Откуда: Donets'k

Re: ipfw+natd+tun0

Непрочитанное сообщение PiterPen747 » 2010-06-22 15:33:31

Так бывает когда нат стартует раньше чем создался интрерфейс tun, пропиши старт ната в скрипте ppp.up.

NR
проходил мимо

Re: ipfw+natd+tun0

Непрочитанное сообщение NR » 2010-06-23 15:32:58

всем спасибо, разобрался:)
решил с помощью http://admins.arg.su/viewtopic.php?f=5&t=15&start=10