LINUX.ORG.RU
ФорумAdmin

Nat под фряхой


0

1

Поднял на машине freeBSD 8.2, перекомпилил ядро с поддержкой ipfw, поднял isc - dhcpd и мучаюсь с натом. в системе существует три интерфейса, вывод ifconfig

em0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
	options=219b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MAGIC>
	ether 00:15:17:6e:e9:bc
	media: Ethernet autoselect (100baseTX <full-duplex>)
	status: active
re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
	options=389b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_UCAST,WOL_MCAST,WOL_MAGIC>
	ether d8:5d:4c:80:ce:3e
	inet 192.168.1.173 netmask 0xffffff00 broadcast 192.168.1.255
	media: Ethernet autoselect (100baseTX <full-duplex>)
	status: active
re1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
	options=389b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_UCAST,WOL_MCAST,WOL_MAGIC>
	ether d8:5d:4c:80:de:8b
	inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255
	media: Ethernet autoselect (100baseTX <full-duplex>)
	status: active
ipfw0: flags=8801<UP,SIMPLEX,MULTICAST> metric 0 mtu 65536
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
	options=3<RXCSUM,TXCSUM>
	inet6 fe80::1%lo0 prefixlen 64 scopeid 0x5 
	inet6 ::1 prefixlen 128 
	inet 127.0.0.1 netmask 0xff000000 
	nd6 options=3<PERFORMNUD,ACCEPT_RTADV>
re0 - смотрит наружу re1 - внутрь сетки. мне нужно настроить нат чтобы он хотя бы пропускал все подключения наружу.
add 10 allow ip from any to any via re0
nat 1 config log if re1 reset same_ports
вендовый комп не пингует дальше 0.254 интерфейс с 1.173 он уже не может пропинговать. что я сделал не так? add 100 nat 1 ip from any to any via re1


Ответ на: комментарий от redixin

лучше всего показать команду пинг до шлюза.

ping 192.168.1.254
64 bytes from 192.168.1.254: icmp_req=15 ttl=127 time=0.435 ms
64 bytes from 192.168.1.254: icmp_req=16 ttl=127 time=0.732 ms
64 bytes from 192.168.1.254: icmp_req=17 ttl=127 time=0.403 ms
64 bytes from 192.168.1.254: icmp_req=18 ttl=127 time=1.61 ms
64 bytes from 192.168.1.254: icmp_req=116 ttl=127 time=0.387 ms
64 bytes from 192.168.1.254: icmp_req=117 ttl=127 time=0.384 ms
64 bytes from 192.168.1.254: icmp_req=118 ttl=127 time=0.381 ms
64 bytes from 192.168.1.254: icmp_req=119 ttl=127 time=0.396 ms
Обратите внимание на номера пакетов, ощущение что файрволл просто дропает часть пакетов. Хотя вполне могут опять быть косяки на целевой машине.

Nortsx
() автор топика
Ответ на: комментарий от Nortsx

Да, уже вторая неудачная целевая машина. Сейчас пишу на этот форум из под своего сервера, полет нормальный)

Nortsx
() автор топика
Ответ на: комментарий от redixin

нетграф не нужен. думминет быстрее и проще и удобнее

жырнейший вброс :) просто нет слов, но холивара разводить не буду!

xspirit
()
Ответ на: комментарий от xspirit

жырнейший вброс

я немного перегнул палку, но в целом все серьезно. не нужен нат на нетграфе, и ng_car не нужен. ipfw-nat и dummynet справляются со своей задачей на 100%, а на фоне ng_nat и ng_car — на все 120%

netgraph конечно в целом штука интересная, но на практике нужна в весьма редких случаях, и NAT с шейпингом это и близко не те случаи.

redixin ★★★★
()
Ответ на: комментарий от xspirit

Новый трабл - когда добавляю pipe то файрвол перестает пропускать все пакеты. Команда типа такой ipfw add pipe 1 ip from any to any

Nortsx
() автор топика
Ответ на: комментарий от xspirit

После задания размера пайпа как раз все заработало. Теперь пытаюсь задать очереди. Есть queue 1, по которой будет идти voip, есть queue 2, по которой будет идти основной трафик Создаю

ipfw add queue 1 ip from any to any
ipfw add queue 2 ip from any to any
ipfw queue 1 config pipe 1 weight 100
ipfw queue 2 config pipe 1 weight 1
Как теперь поставить чтобы через первую очередь шли только voip пакеты а через вторую все остальное? вот этого я не понимаю.

Nortsx
() автор топика
Ответ на: комментарий от Nortsx

в общем выглядит мой конфиг так

${FwCMD} add pipe 1 ip from any to any via re0
${FwCMD} pipe 1 config bw 10Mbit/s
${FwCMD} add 101 queue 1 proto udp dst-port 5059-6000
${FwCMD} queue 1 config pipe 1 weight 100
${FwCMD} add 102 queue 2 ip from any to any
${FwCMD} queue 2 config pipe 1 weight 1
Ip телефоны висят на портах с 5059 по 6000 порт. Это будет работать? И как проверить не подключая айпи телефон?

Nortsx
() автор топика
Ответ на: комментарий от Nortsx

гм, работает оно не особо, комп подключеный к сети не выходит за пределы шлюза.

Nortsx
() автор топика
Ответ на: комментарий от Nortsx

sysctl net.ionet.ip.fw.one_pass должно быть ноль

ipfw show покажет счетчики, что намекнет на то, попадают ли пакеты под правила

я бы сделал как то так:

${FwCMD} nat 1 config .......
${FwCMD} pipe 1 config bw 10Mbit/s
${FwCMD} queue 1 config pipe 1 weight 100
${FwCMD} queue 2 config pipe 1 weight 1

${FwCMD} add 100 nat 1 ip from any to me recv re1 in # (внешний интерфейс)
${FwCMD} add 200 queue 1 proto udp dst-port 5059-6000 out
${FwCMD} add 300 queue 2 ip from any to any out
${FwCMD} add 400 nat 1 ip from any to any out

учти, что при таком конфиге, у тебя пайп получается какбы полу дуплекс

redixin ★★★★
()
Ответ на: комментарий от Nortsx

Трафик теперь шейпится и все прекрасно грузится. Осталось поставить сквид и можно отдавать машину на тестирование. Спасибо вам огромное за помощь=) готов отблагодарить пивом=) P.S Хотя под новый год это наверное несерьезно=)

Nortsx
() автор топика
Ответ на: комментарий от Nortsx

Вопрос по кеширующему прокси. Наверное нужно направлять ему пакеты до ната из внутренней сетки и после ната из внешней?

Nortsx
() автор топика
Ответ на: комментарий от Nortsx

Попробовал поставить. Настроил сквид - конфиг ниже

http_port 3128 transparent

hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?

no_cache deny QUERY
cache_mem 256 MB
maximum_object_size 8092 KB
maximum_object_size_in_memory 1024 KB
cache_dir ufs /cache 51200 256 1024
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log

tcp_outgoing_address 192.168.1.173

acl     all             src             0.0.0.0/0.0.0.0
acl    denied_sites    dstdomain       \
"/usr/local/etc/squid/denied_sites.conf"
http_access    deny    denied_sites
http_access    allow    all

coredump_dir /cache
pid_filename /var/log/squid/squid.pid
содержимое denied_sites.conf
www.ya.ru
www.yandex.ru
Запустил, затем попробовал настроить ipfw - шный редирект на сквид всех пакетов из инета.
ipfw add 103 fwd 127.0.0.1,3128 tcp from any to any 80 in recv re1
ipfw show
00100 35865 9970367 pipe 1 ip from any to any
00101     1     124 queue 1 ip from any to any proto udp dst-port 5059-6000 via re0
00102 25352 6236617 queue 2 ip from any to any via re0
00103    48    2304 fwd 127.0.0.1,3128 tcp from any to any dst-port 80 in recv re1
04000 12311 3181541 netgraph 2 ip from any to 192.168.1.173 via re0 in
04001  2073  512327 netgraph 1 ip from 192.168.0.0/24 to any via re0 out
65535 30632 9260849 allow ip from any to any
Результат наверное немного предсказуем - машина теперь не может подключиться по хттп никуда) Дело в настройке сквида или все же в ipfw?

Nortsx
() автор топика
Ответ на: комментарий от Nortsx

у роутера пакет идет по всей цепочке фаервола 2 раза: один раз при получении, второй раз при отправке. в первое правило попадают только пакеты пришедшие с интернетов, под остальные правила попадают все пакеты. out добавлено чтобы они не попадали по 2 раза.

redixin ★★★★
()
Ответ на: комментарий от redixin

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

Я не понял. Получается сквид сам по себе натит трафик?

Nortsx
() автор топика
Ответ на: комментарий от Nortsx

нашел затыку, кажется просто падает сквид. пакеты редиректятся но их никто не принимает. Наверное где то не стоят права на запись

Nortsx
() автор топика
Ответ на: комментарий от Nortsx

Поднял сквид но теперь новая проблема. На все сайты не пускает, пишет Unable to forward request at this time. Конфиг сквида:

http_port 3128 transparent

hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?

no_cache deny QUERY
cache_effective_user nobody
cache_mem 256 MB
maximum_object_size 8092 KB
maximum_object_size_in_memory 1024 KB
cache_dir ufs /cache 51200 256 1024
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log

tcp_outgoing_address 192.168.1.173

acl     all             src             0.0.0.0/0.0.0.0
acl    denied_sites    dstdomain       \
"/usr/local/etc/squid/denied_sites.conf"
http_access    deny    denied_sites
http_access    allow    all

coredump_dir /cache
pid_filename /var/log/squid/squid.pid[

Погуглил - не понял в чем дело, где то советуют что то пропатчить, где то - сменить версию. Сквид 2.7 стейбл.

Nortsx
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.