Страница 1 из 1
IPFW+ipfw_nat Не понимаю, что не так
Добавлено: 2010-12-29 22:00:34
VampireNF
Имеется две сетевухи re0 и em0. re0 локальная, имеет IP 169.254.173.254. em смотрит на провайдера и ей IP выдаётся через DHCP. Дело обычное, сделать роутер
Но не тут то было. Весь веб-трафик ходит через squid, и _только_ этот трафик доходит до интернета. Всё остальное, даже обычные пинги никуда не уходят. Сломал голову в чём проблема. Нат использовал "ядерный" настраивал по статье на сайте Лиса. По выводу ipfw show пакеты ходят на нат, но куда они потом идут я не понимаю. Вообще ничего уже не понимаю. Буду рад за помощь
Код: Выделить всё
# uname -a
FreeBSD makhome.well-com.net 8.1-RELEASE FreeBSD 8.1-RELEASE #0: Sat Dec 25 18:21:03 UTC 2010 root@makhome.well-com.net:/usr/obj/usr/src/sys/MakHome_25122010 i386
Конфиги:
Код: Выделить всё
rc.conf
font8x14="cp866-8x14"
font8x16="cp866b-8x16"
font8x8="cp866-8x8"
gateway_enable="YES"
hostname="makhome.well-com.net"
ifconfig_em0="DHCP -rxcsum"
#ifconfig_em0="192.168.137.2 netmask 255.255.255.0 -rxcsum"
#defaultrouter="192.168.137.1"
ifconfig_re0="inet 169.254.173.254 netmask 255.255.255.0"
keymap="ru.koi8-r.win"
mousechar_start="3"
nfs_reserved_port_only="NO"
ntpdate_enable="YES"
ntpdate_flags="ru.pool.ntp.org"
rpc_statd_enable="YES"
scrnmap="koi8-r2cp866"
sshd_enable="YES"
linux_enable="YES"
usbd_enable="YES"
moused_enable="NO"
dbus_enable="YES"
hald_enable="YES"
firewall_enable="YES"
firewall_quiet="YES"<--># Set to YES to suppress rule display
firewall_nat_enable="YES"
dummynet_enable="YES"
firewall_script="/root/.firewall/fw_day.conf"
named_enable="YES"
named_flage="-u bind -g bind"
dhcpd_enable="YES"
dhcpd_conf="/usr/local/etc/dhcpd.conf"
dhcpd_ifaces="re0"
apache22_enable="YES"
vsftpd_enable="YES"
vsftpd_flags="/usr/local/etc/vsftpd.conf"
squid_enable="YES"
#NFS
rpcbind_enable="YES"
nfs_server_enable="YES"
nfs_server_flags="-u -t -n 20"
mountd_enable="YES"
mountd_flags="-r -n"
firewall
#!/bin/sh
FwCMD="/sbin/ipfw"
LanOut="em0"
IpOut="me"
LanIn="re0"
NetIn="169.254.173.0/24"
IpIn="169.254.173.254"
${FwCMD} -f flush
${FwCMD} -f pipe flush
${FwCMD} -f queue flush
${FwCMD} add 50 check-state
${FwCMD} add 100 pass all from any to any via lo0
${FwCMD} add 200 deny all from any to 127.0.0.0/8
${FwCMD} add 300 deny ip from 127.0.0.0/8 to any
${FwCMD} add allow ip from any to ${NetIn} in via ${LanIn}
${FwCMD} add allow ip from ${NetIn} to any out via ${LanIn}
${FwCMD} add fwd 127.0.0.1,3128 tcp from ${NetIn} to any 80,8080 via ${LanOut}
${FwCMD} nat 1 config log if ${LanOut} reset same_ports deny_in
${FwCMD} add nat 1 ip from any to any via ${LanOut}
${FwCMD} add allow ip from any to any
Конфиг ядра
#################################
#<----->My addons<-----><------>#
#################################
options><------>IPFIREWALL<---->#enable IPFW
options><------>IPFIREWALL_VERBOSE<---->#enable verbose IPWF
options><------>IPFIREWALL_VERBOSE_LIMIT=1000
options><------>IPFIREWALL_NAT<>#enable "kernel nat"
options><------>LIBALIAS
options><------>IPFIREWALL_FORWARD<---->#enable forwarding
options><------>ROUTETABLES=2
options><------>DUMMYNET<------>#enable shaper
options><------>IPDIVERT<------>#enable divert pockets, ex. to natd
Re: IPFW+ipfw_nat Не понимаю, что не так
Добавлено: 2010-12-29 23:05:55
terminus
Re: IPFW+ipfw_nat Не понимаю, что не так
Добавлено: 2010-12-30 1:13:15
VampireNF
Не помогло. К тому же, на сколько я понял, "ifconfig em0 -rxcsum" отключает за одно и txcsum. Потому что в выводе ifconfig`а проподают и RX и ТХ.
Re: IPFW+ipfw_nat Не понимаю, что не так
Добавлено: 2010-12-30 1:22:25
VampireNF
Только что попробовал обычный natd со следующей конфигурацией
Код: Выделить всё
natd.sh
#!/bin/sh
/sbin/natd -f /usr/local/etc/natd.conf -n em0 -dynamic -p 8668
natd.conf
same_ports yes
use_sockets yes
Результат тот же. Работает только то, что ходит через squid. Всё остальное не работает. Странно, весь день убил
Re: IPFW+ipfw_nat Не понимаю, что не так
Добавлено: 2010-12-30 3:26:57
VampireNF
Вот новая моя попытка, включил в rc.conf межсетевой экран типа "open", указав, что НАТ(ядерный) тоже включить и указал ему интерфейс. Результат - всё то же самое. С сервера всё хорошо ходит, на из-за отсутствия squid`a в данном конфиге, теперь вообще ничего не заработало. Вернулся к конфигу указанному в первом посте. Вот, к стати, что Винда говорит:
Код: Выделить всё
>ping ya.ru
Обмен пакетами с ya.ru [93.158.134.3] с 32 байтами данных:
Превышен интервал ожидания для запроса.
Превышен интервал ожидания для запроса.
Превышен интервал ожидания для запроса.
Превышен интервал ожидания для запроса.
Статистика Ping для 93.158.134.3:
Пакетов: отправлено = 4, получено = 0, потеряно = 4
(100% потерь)
>ping 169.254.173.254
Обмен пакетами с 169.254.173.254 по с 32 байтами данных:
Ответ от 169.254.173.254: число байт=32 время<1мс TTL=128
Ответ от 169.254.173.254: число байт=32 время<1мс TTL=128
Ответ от 169.254.173.254: число байт=32 время<1мс TTL=128
Ответ от 169.254.173.254: число байт=32 время<1мс TTL=128
Статистика Ping для 169.254.173.254:
Пакетов: отправлено = 4, получено = 4, потеряно = 0
(0% потерь)
Приблизительное время приема-передачи в мс:
Минимальное = 0мсек, Максимальное = 0 мсек, Среднее = 0 мсек
>ping ya.ru
Обмен пакетами с ya.ru [213.180.204.3] с 32 байтами данных:
Превышен интервал ожидания для запроса.
Превышен интервал ожидания для запроса.
Превышен интервал ожидания для запроса.
Превышен интервал ожидания для запроса.
Статистика Ping для 213.180.204.3:
Пакетов: отправлено = 4, получено = 0, потеряно = 4
(100% потерь)
Всё забываю сказать, что уан_пасс выставлен в ноль.
Re: IPFW+ipfw_nat Не понимаю, что не так
Добавлено: 2010-12-31 0:09:42
VampireNF
Ну чувствуется под Новый Год тут мало кто будет, однако я всё таки продолжу, мало ли найдётся Спаситель
Добавил в правило ната журналирование и сделал пинг, вот что выплыло в журнале:
Код: Выделить всё
Dec 30 21:05:51 makhome kernel: ipfw: 650 Nat ICMP:8.0 169.254.173.1 93.158.134.3 out via em0
Dec 30 21:05:51 makhome kernel: ipfw: 650 Nat ICMP:0.0 93.158.134.3 10.10.120.157 in via em0
Не знаю, но по моему пакт с пингом дошёл до Яндекса и вернулось эхо, однако это эхо не доходит обратно до компьютера с которого был инициирован пинг. И выводит ли лог ната демаскировку?
Re: IPFW+ipfw_nat Не понимаю, что не так
Добавлено: 2010-12-31 0:19:42
VampireNF
Не большое дополнение, ввёл ещё журналирование на правило allow any to any после ната, по логам, на сколько я понимаю, пакт теряется после того как попал в нат для демаскировки.
Код: Выделить всё
Dec 30 21:15:25 makhome kernel: ipfw: 750 Accept ICMP:8.0 169.254.173.1 93.158.134.3 in via re0
Dec 30 21:15:25 makhome kernel: ipfw: 650 Nat ICMP:8.0 169.254.173.1 93.158.134.3 out via em0
Dec 30 21:15:25 makhome kernel: ipfw: 750 Accept ICMP:8.0 10.10.120.157 93.158.134.3 out via em0
Dec 30 21:15:25 makhome kernel: ipfw: 650 Nat ICMP:0.0 93.158.134.3 10.10.120.157 in via em0
Dec 30 21:15:25 makhome kernel: ipfw: 750 Accept ICMP:0.0 93.158.134.3 169.254.173.1 in via em0
Re: IPFW+ipfw_nat Не понимаю, что не так
Добавлено: 2010-12-31 2:50:42
VampireNF
Проверил ещё и tcpdump`ом:
Код: Выделить всё
makhome# tcpdump -n -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
23:48:50.137187 IP 10.10.120.157 > 87.250.251.3: ICMP echo request, id 256, seq 54, length 40
23:48:50.146756 IP 87.250.251.3 > 10.10.120.157: ICMP echo reply, id 256, seq 54, length 40
23:48:54.653890 IP 10.10.120.157 > 87.250.251.3: ICMP echo request, id 256, seq 55, length 40
23:48:54.663759 IP 87.250.251.3 > 10.10.120.157: ICMP echo reply, id 256, seq 55, length 40
23:48:59.654949 IP 10.10.120.157 > 87.250.251.3: ICMP echo request, id 256, seq 56, length 40
23:48:59.664669 IP 87.250.251.3 > 10.10.120.157: ICMP echo reply, id 256, seq 56, length 40
23:49:04.656032 IP 10.10.120.157 > 87.250.251.3: ICMP echo request, id 256, seq 57, length 40
23:49:04.665595 IP 87.250.251.3 > 10.10.120.157: ICMP echo reply, id 256, seq 57, length 40
makhome# tcpdump -n -i re0 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on re0, link-type EN10MB (Ethernet), capture size 96 bytes
23:50:42.176851 IP 169.254.173.1 > 87.250.251.3: ICMP echo request, id 256, seq 63, length 40
23:50:43.409579 IP 169.254.173.1 > 87.250.251.3: ICMP echo request, id 256, seq 64, length 40
Re: IPFW+ipfw_nat Не понимаю, что не так
Добавлено: 2010-12-31 3:33:56
VampireNF
Re: IPFW+ipfw_nat Не понимаю, что не так
Добавлено: 2010-12-31 4:05:14
FreeBSP
про сквид расскажи
Re: IPFW+ipfw_nat Не понимаю, что не так
Добавлено: 2010-12-31 14:32:26
VampireNF
А что про него рассказывать?
Он запущен прозрачным. На него перегоняется только WEB трафик идущий через 80 или 8080 порты. Если убрать правило перенаправления в межсетевом экране и убить сквид, то результат будет уже понятным. Ничего не работает. Ничего. На сколько я понял из всех этих tcpdump`ов и просмотра журналов МЭ, то пакет после демаскировки проходит по разрешающему правилу и уходит из МЭ. Дальше, как я понимаю, ОС должна этот пакет с em0 перенаправить на re0, но где-то тут пакет теряется.
Re: IPFW+ipfw_nat Не понимаю, что не так
Добавлено: 2011-01-01 12:54:09
Kos
покажите наконец-то вывод:
Re: IPFW+ipfw_nat Не понимаю, что не так
Добавлено: 2011-01-03 0:20:04
VampireNF
Извините, как-то не подумал, что стоит выложить это. К этому времени конфиг не много изменился. Вот он:
Код: Выделить всё
firewall
#!/bin/sh
FwCMD="/sbin/ipfw"
LanOut="em0"
IpOut="me"
LanIn="re0"
NetIn="169.254.173.0/24"
IpIn="169.254.173.254"
${FwCMD} -f flush
${FwCMD} -f pipe flush
${FwCMD} -f queue flush
${FwCMD} add 50 check-state
${FwCMD} add 100 pass all from any to any via lo0
${FwCMD} add 200 deny all from any to 127.0.0.0/8
${FwCMD} add 300 deny ip from 127.0.0.0/8 to any
${FwCMD} add allow ip from any to ${IpIn} 22 in via ${LanIn}
${FwCMD} add allow log ip from any to any via ${LanIn}
${FwCMD} add fwd 127.0.0.1,3128 log tcp from ${NetIn} to any 80,8080 via ${LanOut}
${FwCMD} nat 1 config log if ${LanOut} reset same_ports deny_in
${FwCMD} add nat 1 log ip4 from ${NetIn} to any via ${LanOut} out
${FwCMD} add nat 1 log ip4 from any to me via ${LanOut} in
${FwCMD} add allow ip from any to any
Ну и вывод "ipfw show":
Код: Выделить всё
# ipfw show
00050 0 0 check-state
00100 1945 254525 allow ip from any to any via lo0
00200 0 0 deny ip from any to 127.0.0.0/8
00300 0 0 deny ip from 127.0.0.0/8 to any
00400 15757 851487 allow ip from any to 169.254.173.254 dst-port 22 in via re0
00500 1467334 1159330505 allow log logamount 1000 ip from any to any via re0
00600 489716 96552242 fwd 127.0.0.1,3128 log logamount 1000 tcp from 169.254.173.0/24 to any dst-port 80,8080 via em0
00700 12910 652931 nat 1 log logamount 1000 ip4 from 169.254.173.0/24 to any via em0 out
00800 797677 1000082703 nat 1 log logamount 1000 ip4 from any to me via em0 in
00900 2269425 1182756821 allow log logamount 1000 ip from any to any
65535 0 0 deny ip from any to any
Re: IPFW+ipfw_nat Не понимаю, что не так
Добавлено: 2011-01-03 0:51:04
VampireNF
И ещё в догонку:
Код: Выделить всё
#netstat -nr
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 10.10.112.1 UGS 33 1138715 em0
10.10.112.0/20 link#1 U 0 533 em0
10.10.120.157 link#1 UHS 0 0 lo0
127.0.0.1 link#6 UH 0 984 lo0
169.254.173.0/24 link#3 U 3 937320 re0
169.254.173.254 link#3 UHS 0 1 lo0
Re: IPFW+ipfw_nat Не понимаю, что не так
Добавлено: 2011-01-03 22:56:52
armadex
лучше юзай ng_nat если что стучи в аську, а вообще фаер у тебя закрытый так что смотри в log что и где не проходит
Re: IPFW+ipfw_nat Не понимаю, что не так
Добавлено: 2011-01-03 23:26:39
VampireNF
Как закрытый? По мне так открытей не куда
Всё куда хочешь и от куда хочешь ходит
Проблема как раз в том, что судя по логам и tcpdump`у НАТ отрабатывает на отлично, пакет натиться и уходит в Интернет. И приходя из Интернета он тоже натиться, и выходит из МЭ по разрешающему правилу (разрешить всё и всем), и, как я понимаю всю эту систему, он попадает в ОС, в которой перед пактом ставиться вопрос "Ты ко мне или нет?", пакет должен ответить "нет" и ОС должна его промаршрутизировать на второй интерфейс, где этот злощастный пакет снова попадает в МЭ. Но этого всего по каким-то не ведомым мне причинам не происходит. Я себе уже мозг вскипятил просто ищя эту причину. Не знаю чем мне поможет нетграфоский нат, я пробовал старый добрый натд, но и он не заработал. Та же проблема если стартануть штатный скрипт в режиме "ОПЕН" с включённым натом. Я уже просто не знаю куда копать, а гуру молчат
Re: IPFW+ipfw_nat Не понимаю, что не так
Добавлено: 2011-01-04 2:56:19
hranitel_y2k
Начните с простого, вместо
${FwCMD} add nat 1 log ip4 from ${NetIn} to any via ${LanOut} out
${FwCMD} add nat 1 log ip4 from any to me via ${LanOut} in
Вот это
Код: Выделить всё
${FwCMD} add nat 1 ip from any to any via ${LanOut}
А потом уже будете усложнять...
Re: IPFW+ipfw_nat Не понимаю, что не так
Добавлено: 2011-01-04 3:56:20
VampireNF
hranitel_y2k писал(а):Начните с простого, вместо
${FwCMD} add nat 1 log ip4 from ${NetIn} to any via ${LanOut} out
${FwCMD} add nat 1 log ip4 from any to me via ${LanOut} in
Вот это
Код: Выделить всё
${FwCMD} add nat 1 ip from any to any via ${LanOut}
А потом уже будете усложнять...
В данный момент так и стоит. Да собственно говоря так и было с самого начала. Толку-то
Re: IPFW+ipfw_nat Не понимаю, что не так
Добавлено: 2011-01-04 13:26:58
hranitel_y2k
Честно говоря, меня немного смущает ваш диапазон для внутреннего интерфейса. Покопался в гугле и вот что нашел:
http://www.opennet.ru/openforum/vsluhfo ... 85080.html
Может проблема в этом? Не пробовали внутренний диапазон на что-то более стандартное менять? Для теста используйте хотя бы сеть класса С.
Re: IPFW+ipfw_nat Не понимаю, что не так
Добавлено: 2011-01-04 14:37:53
VampireNF
hranitel_y2k писал(а):Честно говоря, меня немного смущает ваш диапазон для внутреннего интерфейса. Покопался в гугле и вот что нашел:
http://www.opennet.ru/openforum/vsluhfo ... 85080.html
Может проблема в этом? Не пробовали внутренний диапазон на что-то более стандартное менять? Для теста используйте хотя бы сеть класса С.
Честно говоря я уже и сам почти созрел до такого умозаключения. Но есть реально рабочая машина с 6-ой FreeBSD которую 169.254.173.0/24 никоим образом не напрягает
Но Вам собственно большое спасибо за, наконец-то, дельный совет
По той ссылке которую Вы дали там человек сырец переделал, ну мне до фанатизма данная подсеть не нужна, так что попробую поменять.
Re: IPFW+ipfw_nat Не понимаю, что не так
Добавлено: 2011-01-04 14:45:22
hranitel_y2k
Всегда пожалуйста:)
Как раз в той ссылке написано,что на 6.0 сие великолепно работает,а вот уже на 7.1 и выше нет. Для совместимости с RFC переписали видимо.
Re: IPFW+ipfw_nat Не понимаю, что не так
Добавлено: 2011-01-04 15:18:45
VampireNF
Только что переделал все конфиги под сеть 192.168.173.0/24. После ребута всё заработало. Ещё раз спасибо. Вот что значит не знание RFC