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

Исходное сообщение
"Вывод локальной сети черз раутер на FreeBSD"

Отправлено NFS , 09-Июл-05 16:46 
Здравствуйте уважаемые,
Пытаюсь настроить выход в интернет локальной сети с помощью FreeBSD 5.4
Сделал следующее
1. в kernel добавил следующее:
options IPFIREWALL
options IPDIVERT
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=500
options IPFIREWALL_FORWARD
options IPFIREWALL_DEFAULT_TO_ACCEPT
options TCP_DROP_SYNFIN

При условии, что dc0 - смотрит в интернет, bge0 - смотрит в лок.сеть
2. в rc.conf следующее:
gateway_enable="YES"
firewall_enable="YES"
firewall_type="router-net"
natd_enable="YES"
natd_interface="dc0"
natd_flags="-f /etc/natd.conf"

firewall_quiet="NO"
firewall_script="/etc/rc.firewall"
firewall_logging="YES"
natd_program="/sbin/natd"
# natd_flags="-dynamic -n dc0"
hostname="xxx.xxx.ru"
# ifconfig_bge0="DHCP"
inetd_enable="NO"
kern_securelevel="0"
kern_securelevel_enable="NO"
linux_enable="YES"
moused_enable="YES"
moused_port="/dev/psm0"
moused_type="auto"
nfs_reserved_port_only="NO"
router="/sbin/routed"
router_enable="YES"
router_flags="-q"
saver="logo"
sshd_enable="YES"
tcp_extensions="NO"
usbd_enable="YES"
# -- sysinstall generated deltas -- # Wed Jun 22 14:13:05 2005
ifconfig_dc0="inet 10.x.y.2 netmask 255.255.255.0"
ifconfig_bge0="inet 192.168.x.15 netmask 255.255.255.0"
defaultrouter="10.x.y.1"
hostname="xxx.xxx.ru"

3. В natd.conf следующее
interface dc0
use_sockets yes
same_ports yes
dynamic yes

4. В rc.firewall следующее:
[Rr][Oo][Uu][Tt][Ee][Rr]-[Nn][Ee][Tt])

/sbin/ipfw -f flush
/sbin/ipfw add divert natd all from any to any via dc0
/sbin/ipfw add pass all from any to any

С этими установками на сервере пингуется и локальная сеть и интернет. Соответственно возможна работ в инете. НО рабочие станции могут пинговать только сам инет сервер (192.168.x.15) и напрочь отсутствует выход в инет.

Подскажите где ошибка?
Спасибо


Содержание

Сообщения в этом обсуждении
"Вывод локальной сети черз раутер на FreeBSD"
Отправлено vagrantt , 09-Июл-05 17:48 
>Здравствуйте уважаемые,
>Пытаюсь настроить выход в интернет локальной сети с помощью FreeBSD 5.4
>Сделал следующее
>1. в kernel добавил следующее:
>options IPFIREWALL
>options IPDIVERT
>options IPFIREWALL_VERBOSE
>options IPFIREWALL_VERBOSE_LIMIT=500
>options IPFIREWALL_FORWARD
>options IPFIREWALL_DEFAULT_TO_ACCEPT
>options TCP_DROP_SYNFIN
>
>При условии, что dc0 - смотрит в интернет, bge0 - смотрит в
>лок.сеть
>2. в rc.conf следующее:
>gateway_enable="YES"
>firewall_enable="YES"
>firewall_type="router-net"
А чем не устраивает OPEN ?
>4. В rc.firewall следующее:
>[Rr][Oo][Uu][Tt][Ee][Rr]-[Nn][Ee][Tt])
>
>/sbin/ipfw -f flush
>/sbin/ipfw add divert natd all from any to any via dc0
>/sbin/ipfw add pass all from any to any
>
Сравни с оригиналом:
----------------------------------
case ${natd_enable} in
        [Yy][Ee][Ss])
                if [ -n "${natd_interface}" ]; then
                        ${fwcmd} add 50 divert natd all from any to any via ${natd_interface}
                fi
                ;;
        esac

# Prototype setups.
#
case ${firewall_type} in
[Oo][Pp][Ee][Nn])
        setup_loopback
        ${fwcmd} add 65000 pass all from any to any
        ;;
esac
----------------------------------------------------
Проверить, что получилось, можно так: ipfw list

Не забудь в /etc/resolv.conf прописать dns провайдера.


"Вывод локальной сети черз раутер на FreeBSD"
Отправлено NFS , 09-Июл-05 18:55 
>Сравни с оригиналом:
>----------------------------------
>case ${natd_enable} in
>        [Yy][Ee][Ss])
>            
>    if [ -n "${natd_interface}" ]; then
>            
>          
> ${fwcmd} add 50 divert natd all from any to any
>via ${natd_interface}
>            
>    fi
>            
>    ;;
>        esac
>
># Prototype setups.
>#
>case ${firewall_type} in
>[Oo][Pp][Ee][Nn])
>        setup_loopback
>        ${fwcmd} add 65000 pass
>all from any to any
>        ;;
>esac
>----------------------------------------------------
>Проверить, что получилось, можно так: ipfw list
>
>Не забудь в /etc/resolv.conf прописать dns провайдера.


Это пробовалось как один из вариантов ранее, аналогично не оказало никакого эффекта :(


"Вывод локальной сети черз раутер на FreeBSD"
Отправлено vagrantt , 10-Июл-05 12:40 

>inetd_enable="NO"
>kern_securelevel="0"
>kern_securelevel_enable="NO"
Интерсно, для чего эти строки, особенно 1?
Зачем Вы выключили inetd?

"Вывод локальной сети черз раутер на FreeBSD"
Отправлено ТАЫ , 10-Июл-05 20:57 
>
>>inetd_enable="NO"
>>kern_securelevel="0"
>>kern_securelevel_enable="NO"
>Интерсно, для чего эти строки, особенно 1?
>Зачем Вы выключили inetd?

без последних двух у меня не запускался х-windows
а первую - честно говоря по умолчанию она стояла на no, я пока не стал ее трогать :)


"Вывод локальной сети черз раутер на FreeBSD"
Отправлено vagrantt , 10-Июл-05 21:14 
>>
>>>inetd_enable="NO"
>>>kern_securelevel="0"
>>>kern_securelevel_enable="NO"
>>Интерсно, для чего эти строки, особенно 1?
>>Зачем Вы выключили inetd?
>
>без последних двух у меня не запускался х-windows
>а первую - честно говоря по умолчанию она стояла на no, я
>пока не стал ее трогать :)

Однак, надо, наверное inetd_enable="YES"


"Вывод локальной сети черз раутер на FreeBSD"
Отправлено div , 10-Июл-05 21:32 
проверено на freebsd 5.4
cd /usr/src/sys/i386/conf/
cp GENERIC GENERIC.old
------edit GENERIC----------------
options         IPFIREWALL
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=10
options         IPDIVERT
options         IPFIREWALL_DEFAULT_TO_ACCEPT
options         DUMMYNET
------making kernel---------------
config GENERIC
cd ../../compile/GENERIC/
make depend
make
make install
cd /etc/
------edit rc.conf----------------
gateway_enable="YES"
firewall_enable="YES"
firewall_quiet="YES"
firewall_type="OPEN"
------edit /etc/natd.conf---------
use_sockets yes
same_ports yes
#unregistered_only yes
interface ext_if
------edit ipfw rules-------------
ipfw add 199 divert natd all from any to any via ext_if

затем просто запускаете natd:
natd -f /etc/natd.conf


"Вывод локальной сети черз раутер на FreeBSD"
Отправлено NFS , 10-Июл-05 23:28 
>Однак, надо, наверное inetd_enable="YES"
Наверно ты прав.. попробую поставить

между делом сервер все-таки запустился.
Спасибо vagrantt и div


"Вывод локальной сети черз раутер на FreeBSD"
Отправлено Olehv , 11-Июл-05 11:38 
Привет бойцам невидимого фронта !!!
спасибо div это понятно
а вот за что спасибо vagrantt НЕЗНАЮ!!!!!

Какая связь  inetd_enable="YES"  с роутером вопрос к vagrantt

Я бы посоветовал открить какую нибудь доку и посмотреть
для чего нада inetd
Читайте доки здесь их полно
не спешите вся жизнь еще впереди....


"Вывод локальной сети черз раутер на FreeBSD"
Отправлено vagrantt , 11-Июл-05 13:39 
>Привет бойцам невидимого фронта !!!
>спасибо div это понятно
>а вот за что спасибо vagrantt НЕЗНАЮ!!!!!
>
>Какая связь  inetd_enable="YES"  с роутером вопрос к vagrantt
>
>Я бы посоветовал открить какую нибудь доку и посмотреть
>для чего нада inetd
>Читайте доки здесь их полно
>не спешите вся жизнь еще впереди....

А ты сделай на своем шлюзике inetd_enable="NO" ;), потом запость здесь все то, что о тебе скажет твое начальство, хорошо?
http://www.argc-argv.relc.com/78_2002/article.php


"Вывод локальной сети черз раутер на FreeBSD"
Отправлено andr , 11-Июл-05 13:56 
>А ты сделай на своем шлюзике inetd_enable="NO" ;), потом запость здесь все
>то, что о тебе скажет твое начальство, хорошо?
>http://www.argc-argv.relc.com/78_2002/article.php

чем меньше запущенных сервисов на рутере тем лучше =)
зачем тебе к примеру нужен inetd?


"Вывод локальной сети черз раутер на FreeBSD"
Отправлено INM , 11-Июл-05 20:59 
>А ты сделай на своем шлюзике inetd_enable="NO" ;), потом запость здесь все
>то, что о тебе скажет твое начальство, хорошо?
>http://www.argc-argv.relc.com/78_2002/article.php
Наверное чего то не понимаю....
Может вы мне объясните в чем изюминка:

inetd(xinetd) <-> начальство
inetd(xinetd) <-> роутинг пакетов(маршрутизация)

Какая связь?

>     Здравствуйте уважаемые,
>    Пытаюсь настроить выход в интернет локальной сети с помощью FreeBSD >5.4
>    Сделал следующее
>    1. в kernel добавил следующее:
>    options IPFIREWALL
>    options IPDIVERT
необходимо для natd
>    options IPFIREWALL_VERBOSE
>    options IPFIREWALL_VERBOSE_LIMIT=500
>    options IPFIREWALL_FORWARD
>    options IPFIREWALL_DEFAULT_TO_ACCEPT
т.е. по умолчанию пропускаем все(firewall_type="OPEN")
>    options TCP_DROP_SYNFIN
>
>    При условии, что dc0 - смотрит в интернет, bge0 - смотрит в лок.сеть
>    2. в rc.conf следующее:
>    gateway_enable="YES"
разрешаем форвардинг пакетов(маршрутизацию)
>    firewall_enable="YES"
>    firewall_type="router-net"
для чего это,если инет не работает?
заметим по умолчанию файервол пропускает все, я бы до поры оставил бы все по умолчанию(настроил бы файервол позже)
>    natd_enable="YES"
разрешаем поднятие natd
>    natd_interface="dc0"
>    natd_flags="-f /etc/natd.conf"
тебе на самом деле нужен какая то изощеренная трансляция?
значения по умолчанию вполне разумны для первоначальной настройки
>
>    firewall_quiet="NO"
>    firewall_script="/etc/rc.firewall"
>    firewall_logging="YES"
опять же по файерволу см. выше
т.е это круто мы пишем свой собственный конфиг а системе подсовываем значения по умолчанию(пропиши в rc.conf в таком случае firewall_type="OPEN", будет тебе счастье, а эти три строки убери)
>    natd_program="/sbin/natd"
зачем копировать значение по умолчанию?
(/etc/defaults/rc.conf)
>    # natd_flags="-dynamic -n dc0"
>    hostname="xxx.xxx.ru"
>    # ifconfig_bge0="DHCP"
>    inetd_enable="NO"
>    kern_securelevel="0"
>    kern_securelevel_enable="NO"
>    linux_enable="YES"
>    moused_enable="YES"
>    moused_port="/dev/psm0"
>    moused_type="auto"
>    nfs_reserved_port_only="NO"
>    router="/sbin/routed"
>    router_enable="YES"
>    router_flags="-q"
есть основания заводить динамическую маршрутизацию?
routed настроен?
>    saver="logo"
>    sshd_enable="YES"
>    tcp_extensions="NO"
>    usbd_enable="YES"
>    # -- sysinstall generated deltas -- # Wed Jun 22 14:13:05 2005
>    ifconfig_dc0="inet 10.x.y.2 netmask 255.255.255.0"
маска точно такая?
сам роутер нормально пингует 10.х.у.2?
>    ifconfig_bge0="inet 192.168.x.15 netmask 255.255.255.0"
>    defaultrouter="10.x.y.1"
>    hostname="xxx.xxx.ru"
какой скрытый смысл в повторении доменного имени хоста?

>    3. В natd.conf следующее
    interface dc0
>    use_sockets yes
>    same_ports yes
>    dynamic yes

>    4. В rc.firewall следующее:
>    [Rr][Oo][Uu][Tt][Ee][Rr]-[Nn][Ee][Tt])

>    /sbin/ipfw -f flush
>    /sbin/ipfw add divert natd all from any to any via dc0
>    /sbin/ipfw add pass all from any to any
опять же значения по умолчанию из /etc/rc.firewall для файервола типа OPEN, зачем? замечательно ты и скрипт по умолчанию для ipfw переписал?
зачем, если ничего особенного ты тут не делаешь?

P.S. Мой тебе совет, убери из /etc/rc.conf все что связано с маршрутизацией и файерволом, верни обратно скрипт по умолчанию rc.firewall и начни настройку сначала.

в /etc/rc.conf
gateway_enable="YES"
firewall_enable="YES"
firewall_type="OPEN"
natd_enable="YES"
natd_interface="dc0"
этого должно хватить для начала.


"Вывод локальной сети черз раутер на FreeBSD"
Отправлено myakosh , 11-Июл-05 14:31 
та часть где настраивается ipfw
/sbin/ipfw add divert natd ip from inip to any out xmit dc0
/sbin/ipfw add divert natd ip from any to outip
/sbin/ipfw add pass all from any to any

где inip адрес внутри сети (10.x.y.0/24)
outip внешний адрес (192.168.x.15)


"Вывод локальной сети черз раутер на FreeBSD"
Отправлено NFS , 12-Июл-05 11:17 
Уважаемые,

я тут с помощью man, ваших рекомендаций и инета подготовил rc.firewall.
Что думаете?

----
fwcmd=/sbin/ipfw

oif="dco"
onet="10.x.y.0"
omask="255.255.255.0"
oip="10.x.y.2"

# Set these to your inside interface network and netmask and ip.
iif="bge0"
inet="192.168.y.0"
imask="255.255.255.0"
iip="192.168.y.15"

# Allow communications through loopback interface and deny 127.0.0.1/8
# from any other interfaces
setup_loopback
      
# Stop spoofing
${fwcmd} add deny log all from ${inet}:${imask} to any in via ${oif}
${fwcmd} add deny log all from ${onet}:${omask} to any in via ${iif}

# Stop RFC1918 nets on the outside interface
${fwcmd} add deny log all from any to 10.0.0.0/8 via ${oif}
${fwcmd} add deny log all from any to 172.16.0.0/12 via ${oif}
${fwcmd} add deny log all from any to 192.168.y.0/16 via ${oif}

# Stop draft-manning-dsua-03.txt (1 May 2000) nets (includes RESERVED-1,
# DHCP auto-configuration, NET-TEST, MULTICAST (class D), and class E),
# RFC 3330 nets on the outside interface
${fwcmd} add deny log all from any to 0.0.0.0/8 via ${oif}
${fwcmd} add deny log all from any to 169.254.0.0/16 via ${oif}
${fwcmd} add deny log all from any to 192.0.2.0/24 via ${oif}
${fwcmd} add deny log all from any to 198.18.y.0/15 via ${oif}
${fwcmd} add deny log all from any to 224.0.0.0/4 via ${oif}
${fwcmd} add deny log all from any to 240.0.0.0/4 via ${oif}

# Network Address Translation.  This rule is placed here deliberately
# so that it does not interfere with the surrounding address-checking
# rules.  If for example one of your internal LAN machines had its IP
# address set to 192.168.0.2 then an incoming packet for it after being
# translated by natd(8) would match the `deny' rule above.  Similarly
# an outgoing packet originated from it before being translated would
# match the `deny' rule below.
case ${natd_enable} in
[Yy][Ee][Ss])
if [ -n "${natd_interface}" ]; then
${fwcmd} add divert natd all from any to any via ${natd_interface}
fi
;;
esac

# Stop RFC1918 nets on the outside interface
${fwcmd} add deny log all from 10.0.0.0/8 to any via ${oif}
${fwcmd} add deny log all from 172.16.0.0/12 to any via ${oif}
${fwcmd} add deny log all from 192.168.y.0/16 to any via ${oif}

# Stop draft-manning-dsua-03.txt (1 May 2000) nets (includes RESERVED-1,
# DHCP auto-configuration, NET-TEST, MULTICAST (class D), and class E),
# RFC 3330 nets on the outside interface
${fwcmd} add deny log all from 0.0.0.0/8 to any via ${oif}
${fwcmd} add deny log all from 169.254.0.0/16 to any via ${oif}
${fwcmd} add deny log all from 192.0.2.0/24 to any via ${oif}
${fwcmd} add deny log all from 198.168.y.0/15 to any via ${oif}
${fwcmd} add deny log all from 224.0.0.0/4 to any via ${oif}
${fwcmd} add deny log all from 240.0.0.0/4 to any via ${oif}

# Allow anything on the internal net
${fwcmd} add allow all from any to any via ${iif}

# Allow anything outbound from this net.
${fwcmd} add allow all from ${onet}:${omask} to any out via ${oif}

# Deny anything outbound from other nets.
# ${fwcmd} add deny log all from any to any out via ${oif}  #  removed

# Allow TCP through if setup succeeded.
${fwcmd} add allow tcp from any to any established

# Allow IP fragments to pass through.
${fwcmd} add allow all from any to any frag

# Allow inbound ftp, ssh, email, tcp-dns, http, https, pop3, pop3s.
${fwcmd} add allow tcp from any to ${oip} 21 setup in via ${oif}
${fwcmd} add allow tcp from any to ${oip} 22 setup in via ${oif}
${fwcmd} add allow tcp from any to ${oip} 25 setup in via ${oif}
${fwcmd} add allow tcp from any to ${oip} 53 setup in via ${oif}
${fwcmd} add allow tcp from any to ${oip} 80 setup in via ${oif}
${fwcmd} add allow tcp from any to ${oip} 443 setup in via ${oif}
${fwcmd} add allow tcp from any to ${oip} 110 setup in via ${oif}
${fwcmd} add allow tcp from any to ${oip} 995 setup in via ${oif}

# Deny inbound auth, netbios, ldap, and Microsoft's DB protocol
# without logging.
${fwcmd} add deny tcp from any to ${oip} 113 setup in via ${oif}
${fwcmd} add deny tcp from any to ${oip} 139 setup in via ${oif}
${fwcmd} add deny tcp from any to ${oip} 389 setup in via ${oif}
${fwcmd} add deny tcp from any to ${oip} 445 setup in via ${oif}

# Deny some chatty UDP broadcast protocols without logging.
${fwcmd} add deny udp from any 137 to any in via ${oif}
${fwcmd} add deny udp from any to any 137 in via ${oif}
${fwcmd} add deny udp from any 138 to any in via ${oif}
${fwcmd} add deny udp from any 513 to any in via ${oif}
${fwcmd} add deny udp from any 525 to any in via ${oif}

# Allow inbound DNS and NTP replies.  This is somewhat of a hole,
# since we're looking at the incoming port number, which can be
# faked, but that's just the way DNS and NTP work.
${fwcmd} add allow udp from any 53 to ${oip} in via ${oif}
${fwcmd} add allow udp from any 123 to ${oip} in via ${oif}

# Allow inbound DNS queries.
${fwcmd} add allow udp from any to ${oip} 53 in via ${oif}

# Deny inbound NTP queries without logging.
${fwcmd} add deny udp from any to ${oip} 123 in via ${oif}

# Allow traceroute to function, but not to get in.
${fwcmd} add unreach port udp from any to ${oip} 33435-33524 in via ${oif}

# Allow some inbound icmps - echo reply, dest unreach, source quench,
# echo, ttl exceeded.
${fwcmd} add allow icmp from any to any in via ${oif} icmptypes 0,3,4,8,11

# Broadcasts are denied and not logged.
${fwcmd} add deny all from any to 255.255.255.255

# Everything else is denied and logged.
${fwcmd} add deny log all from any to any