Страница 1 из 1
natd не работает
Добавлено: 2011-02-05 17:32:08
ramcram
Эиулирую работу небольшого офиса на виртуальной машине. Пробовал и на 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.
С чем это может быть связано? Проблема с виртуалкой?
Re: natd не работает
Добавлено: 2011-02-05 17:41:19
ramcram
РПочему-то не могу отредактировать своё сообщение, вот дополнительная информация:
Код: Выделить всё
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
Re: natd не работает
Добавлено: 2011-02-06 1:45:29
hranitel_y2k
Ключевая фраза: "ipfw выключен"
И как по Вашему freebsd должна "перенаправлять" пакеты идущие наружу в натд?
Внимательно читаете и вникаете:
http://www.lissyara.su/articles/freebsd/tuning/ipfw/
Re: natd не работает
Добавлено: 2011-02-06 12:07:30
ramcram
Читал. Все перечитал. Со включенным тоже не работает. Вот конфиг:
Код: Выделить всё
########################
# 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
########################################################
Re: natd не работает
Добавлено: 2011-02-06 16:16:19
hranitel_y2k
Конфа, это хорошо. Но нужен еще вывод "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}
Вы точно внимательно читали и поняли что там написано?
Re: natd не работает
Добавлено: 2011-02-06 19:13:01
ramcram
так, понял, позже посмотрю и отпишусь
Re: natd не работает
Добавлено: 2011-02-06 20:32:51
ramcram
Поменял интерфейсы, немного поменялись настройки. Конфиг 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
Re: natd не работает
Добавлено: 2011-02-06 21:12:02
hranitel_y2k
из 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 подгрузить как модуль и все-таки придется вам ядро пересобирать.
Re: natd не работает
Добавлено: 2011-02-06 22:12:30
ramcram
Ядро собирал и делал настройки именно по этому руководству.. Ядро собирал с этими опциями. Что было не так до сих пор не понимаю, вроде ничего не менял. Сейчас заново всё пересобрал и заново пересмотрел всё настройки - заработало. Спасибо большое!
Вся затея строилась только для одного, удалённый офис, обновить FreeBSD 7.0 до 8.1. Ядро сборное, не дефолтное. Максимально безболезненно, нат включить в IPFW, ну и много полезного поставить и облагородить. То биш довести до ума. По возможности сделать всё удалённо, вот и тренируюсь. А даже с теми настройками что в офисе, в виртуалке почему-то не заработало, хотя никогда проблем не возникало. Вот и мучаюсь.
Спасибо превеликое!