natd не работает

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

natd не работает

Непрочитанное сообщение ramcram » 2011-02-05 17:32:08

Эиулирую работу небольшого офиса на виртуальной машине. Пробовал и на Vmware 7.1.3 и на Virtualbox 4.0.2.
1-я виртуальная машина: FreeBSD 7.3

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

 ifconfig
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
	options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
	ether 00:0c:29:8e:99:8d
	inet 192.168.1.10 netmask 0xffffff00 broadcast 192.168.1.255
	media: Ethernet autoselect (1000baseTX <full-duplex>)
	status: active
em1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
	options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
	ether 00:0c:29:8e:99:97
	inet 192.168.2.10 netmask 0xffffff00 broadcast 192.168.2.255
	media: Ethernet autoselect (1000baseTX <full-duplex>)
	status: active
rc.conf

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

defaultrouter="192.168.1.1"
gateway_enable="YES"
hostname="s2.test.net"
ifconfig_em0="inet 192.168.1.10 netmask 255.255.255.0"
ifconfig_em1="inet 192.168.2.10 netmask 255.255.255.0"

keymap="us.iso"
linux_enable="YES"
sshd_enable="YES"
squid_enable="YES"

firewall_enable="YES"
firewall_script="/etc/rc.firewall"
firewall_quiet="YES"
firewall_logging="YES"
firewall_flags="-q"

natd_enable="YES"
natd_interface="em0"
natd_flags="-f /etc/natd.conf"
natd.conf

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

log yes
use_sockets yes
same_ports yes
unregistered_only yes
interface em0
ipfw выключен. NATD запущен и в процессах виден. Squid работает и вторая машина в тырнет выходит. Но при этом запросы не натятся. Про прослушивании внешнего интерфейса, я вижу запросы от второй машины с её IP.
С чем это может быть связано? Проблема с виртуалкой?

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

ramcram
проходил мимо
Сообщения: 7
Зарегистрирован: 2011-02-05 17:01:56

Re: natd не работает

Непрочитанное сообщение ramcram » 2011-02-05 17:41:19

РПочему-то не могу отредактировать своё сообщение, вот дополнительная информация:

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

ps -A | grep nat
  795  ??  Is     0:00.00 /sbin/natd -f /etc/natd.conf -n em0

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

tcpdump -i em0 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on em0, link-type EN10MB (Ethernet), capture size 96 bytes
17:37:35.068524 IP [b]192.168.2.30[/b] > www.yandex.ru: ICMP echo request, id 512, seq 1536, length 40
17:37:40.567962 IP [b]192.168.2.30[/b] > www.yandex.ru: ICMP echo request, id 512, seq 1792, length 40
17:37:46.068233 IP [b]192.168.2.30[/b] > www.yandex.ru: ICMP echo request, id 512, seq 2048, length 40

hranitel_y2k
сержант
Сообщения: 154
Зарегистрирован: 2007-12-10 21:04:35

Re: natd не работает

Непрочитанное сообщение hranitel_y2k » 2011-02-06 1:45:29

Ключевая фраза: "ipfw выключен"
И как по Вашему freebsd должна "перенаправлять" пакеты идущие наружу в натд? :pardon:

Внимательно читаете и вникаете: http://www.lissyara.su/articles/freebsd/tuning/ipfw/
Все гениальное - просто!

ramcram
проходил мимо
Сообщения: 7
Зарегистрирован: 2011-02-05 17:01:56

Re: natd не работает

Непрочитанное сообщение ramcram » 2011-02-06 12:07:30

Читал. Все перечитал. Со включенным тоже не работает. Вот конфиг:

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

########################
#   Firewall Settings   #
#########################
 
# Block console output from FireWall
 
fwcmd="/sbin/ipfw -q"
 
# Outside Interface
 
# wlan inet
 
wan="em0"
 
# lan network
 
lan="em1"
 
wanip="192.168.1.10"
 
# Inside Interface
 
lanip="192.168.2.10"
inet1="192.168.2.0/24"
 
# Servers
sint="192.168.2.30"
 
#######################################
 
# Clear Firewall policy
 
    ipfw -f flush
 
ipfw add allow ip from any to any via lo0
 
# spuff
 
        ipfw add deny ip from any to any not verrevpath in
 
# Fragments
 
        ipfw add deny ip from any to any frag
 
 
        ipfw add deny ip from any to 127.0.0.0/8
        ipfw add deny ip from 127.0.0.0/8 to any
 
        ipfw add pass tcp from ${inet1} to ${lanip} 3128
        ipfw add pass tcp from ${lanip} 3128 to ${inet1}
 
        ipfw add allow ip from ${inet1} to ${inet1}}
        ipfw add allow all from ${sint} to any
        ipfw add allow all from any to ${sint}
        ipfw add allow icmp from ${sint} to any
        ipfw add allow icmp from any to ${sint}
        ipfw add divert natd ip from ${inet1} to any
        ipfw add allow ip from ${wanip} to any
 
        ipfw add divert natd ip from any to ${wanip}
        ipfw add allow ip from any to ${inet1}
 
ipfw add deny tcp from any to ${wanip} in via ${wan} tcpflags syn,!ack
        ipfw add allow tcp from any to ${wanip}
 
        ipfw add allow udp from any to ${wanip} 53
        ipfw add allow udp from any 53 to ${wanip}
 
ipfw add allow icmp from any to any in via ${wan}
 
 
########################################################
# OTHER - Deny NetBIOS broadcast/ Deny ALL & write log
 
ipfw add deny log all from any to any
 
######################################################## 

hranitel_y2k
сержант
Сообщения: 154
Зарегистрирован: 2007-12-10 21:04:35

Re: natd не работает

Непрочитанное сообщение hranitel_y2k » 2011-02-06 16:16:19

Конфа, это хорошо. Но нужен еще вывод "ipfw show"

И в статье:

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

${FwCMD} add divert natd ip from ${NetIn}/${NetMask} to any out via ${LanOut}
${FwCMD} add divert natd ip from any to ${IpOut} in via ${LanOut}
Вы точно внимательно читали и поняли что там написано?
Все гениальное - просто!

ramcram
проходил мимо
Сообщения: 7
Зарегистрирован: 2011-02-05 17:01:56

Re: natd не работает

Непрочитанное сообщение ramcram » 2011-02-06 19:13:01

так, понял, позже посмотрю и отпишусь

ramcram
проходил мимо
Сообщения: 7
Зарегистрирован: 2011-02-05 17:01:56

Re: natd не работает

Непрочитанное сообщение ramcram » 2011-02-06 20:32:51

Поменял интерфейсы, немного поменялись настройки. Конфиг IPFW на всякий случай поменял на приближённый к статье. Полный вывод всего что есть на данный момент:

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

ifconfig
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
	options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
	ether 00:0c:29:56:ce:38
	inet 192.168.1.10 netmask 0xffffff00 broadcast 192.168.1.255
	media: Ethernet autoselect (1000baseT <full-duplex>)
	status: active
em1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
	options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
	ether 00:0c:29:56:ce:42
	inet 172.16.168.130 netmask 0xffffff00 broadcast 172.16.168.255
	media: Ethernet autoselect (1000baseT <full-duplex>)
	status: active

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

ps -A | grep nat
  802  ??  Is     0:00.00 /sbin/natd -f /etc/natd.conf -n em0

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

ipfw show
00100   0     0 allow ip from any to any via lo0
00200   0     0 deny ip from any to any not verrevpath in
00300   0     0 deny ip from any to any frag
00400   0     0 allow tcp from 172.16.168.0/24 to 172.16.168.130 dst-port 3128
00500   0     0 allow tcp from 172.16.168.130 3128 to 172.16.168.0/24
00600 566 56037 allow ip from any to any established
00700  10   648 allow ip from 192.168.1.10 to any out xmit em0
00800   9   980 allow udp from any 53 to any via 192.168.1.10
00900   0     0 allow udp from any to any dst-port 123 via em0
01000 160  9600 allow icmp from any to any icmptypes 0,8,11
01100  80  9442 allow ip from 172.16.168.30 to any
01200   0     0 allow ip from any to 172.16.168.30
01300   1    60 allow tcp from any to 192.168.1.10 dst-port 22
01400   0     0 allow tcp from 192.168.1.10 22 to any
01500   4   112 deny log ip from any to any
65535   0     0 deny ip from any to any

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

cat /etc/natd.conf 
log yes
use_sockets yes
same_ports yes
unregistered_only yes

interface em0

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

# Clear Firewall policy
 
    ipfw -f flush
 
ipfw add allow ip from any to any via lo0
 
# spuff
 
        ipfw add deny ip from any to any not verrevpath in
 
# Fragments
 
        ipfw add deny ip from any to any frag
	
	ipfw add allow tcp from ${inet1} to ${lanip} 3128
	ipfw add allow tcp from ${lanip} 3128 to ${inet1}
	
	ipfw add divert natd ip from ${inet1} to any out via ${wan}
	ipfw add divert natd ip from any to ${wanip} in via ${wan}	
 
 	ipfw add allow ip from any to any established
	
	ipfw add allow ip from ${wanip} to any out xmit ${wan}

	ipfw add allow udp from any 53 to any via ${wanip}

	ipfw add allow udp from any to any 123 via ${wan}

	ipfw add allow icmp from any to any icmptypes 0,8,11

	ipfw add allow ip from any to any via ${em1}

	ipfw add allow tcp from any to any via ${em1}

	ipfw add allow udp from any to any via ${em1}

	ipfw add allow icmp from any to any via ${em1}

        ipfw add allow all from ${sint} to any
        ipfw add allow all from any to ${sint}

	ipfw add allow tcp from any to ${wanip} 22
	ipfw add allow tcp from ${wanip} 22 to any
	 
ipfw add deny log all from any to any 

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

 tcpdump -i em0 -n icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on em0, link-type EN10MB (Ethernet), capture size 96 bytes
20:32:20.281287 IP 172.16.168.30 > 213.180.204.3: ICMP echo request, id 512, seq 27136, length 40
20:32:25.780673 IP 172.16.168.30 > 213.180.204.3: ICMP echo request, id 512, seq 27392, length 40
20:32:31.281273 IP 172.16.168.30 > 213.180.204.3: ICMP echo request, id 512, seq 27648, length 40
^C
3 packets captured
21 packets received by filter
0 packets dropped by kernel

hranitel_y2k
сержант
Сообщения: 154
Зарегистрирован: 2007-12-10 21:04:35

Re: natd не работает

Непрочитанное сообщение hranitel_y2k » 2011-02-06 21:12:02

из ipfw show видно, что правил заворота пакетов на натд нет ;-)

Внимательно читаем статью:

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

Итак. Для включения файрволла придётся пересобрать ядро со следующими опциями:

options         IPFIREWALL               # собственно файрволл
options         IPFIREWALL_VERBOSE       # логгинг пакетов, если в правиле 
                                         # написано `log`
options         IPFIREWALL_VERBOSE_LIMIT=5 # ограничение логов (повторяющихся) - на 
                                           # случай атак типа флудинга
                                           # (я, правда, 100 ставлю)
options         IPFIREWALL_FORWARD       # перенаправление (форвардинг) пакетов
                                         # например, для прозрачного прокси
options         IPDIVERT                 # если нужен NAT (трансляция адресов)
options         DUMMYNET                 # если понадобится ограничивать скорость 
                                         # инета пользователям (обычно - да :))
options         IPFIREWALL_DEFAULT_TO_ACCEPT  # дефолтовое правило (последнее)
                                           # будет разрешающим (во всех других)
                                           # случаях - запрещающее
Только вот не помню, можно ли divert подгрузить как модуль и все-таки придется вам ядро пересобирать.
Все гениальное - просто!

ramcram
проходил мимо
Сообщения: 7
Зарегистрирован: 2011-02-05 17:01:56

Re: natd не работает

Непрочитанное сообщение ramcram » 2011-02-06 22:12:30

Ядро собирал и делал настройки именно по этому руководству.. Ядро собирал с этими опциями. Что было не так до сих пор не понимаю, вроде ничего не менял. Сейчас заново всё пересобрал и заново пересмотрел всё настройки - заработало. Спасибо большое!
Вся затея строилась только для одного, удалённый офис, обновить FreeBSD 7.0 до 8.1. Ядро сборное, не дефолтное. Максимально безболезненно, нат включить в IPFW, ну и много полезного поставить и облагородить. То биш довести до ума. По возможности сделать всё удалённо, вот и тренируюсь. А даже с теми настройками что в офисе, в виртуалке почему-то не заработало, хотя никогда проблем не возникало. Вот и мучаюсь.
Спасибо превеликое!