|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Alexander Burylov 2:5054/75.1 18 Mar 2005 13:49:30 To : All Subject : ipfw forward -------------------------------------------------------------------------------- Hе совсем могу понять глубокий смысл форварда, вернее совсем не могу. Есть два ISP: ISP1: x.x.x.x/32 - реальный ip, шлюз isp1_gw, интерфейс ng0. ISP2: 192.168.200.23/32 - серый ip (за натом), шлюз 192.168.200.2, интерфейс ng1. Маршрут по умолчанию прописан на ISP1 (т.к нужны входящие снаружи, через нат ничего не выйдет) Есть локалка 192.168.1.0/24 которая соединяется с сервером по pptp и получает адреса из диапазона 192.268.255.0/24. Для хостов 192.168.255.4-20 необходимо весь внутригородской трафик пускать через ISP1, а внешний (интернет) трафик пускать через ISP2 (ибо дешевле). В то же время, для хостов 192.168.1.2-3 необходимо весь трафик пускать через ISP1 (ибо канал толще). netstat -nr Destination Gateway Flags Refs Use Netif Expire default isp1_gw UGS 0 19 ng0 127.0.0.1 127.0.0.1 UH 0 9399 lo0 192.168.1 link#1 UC 0 0 rl0 192.168.1.1 00:c0:26:a7:c6:49 UHLW 0 50 lo0 192.168.200.2 192.168.200.23 UH 0 0 ng1 192.168.200.23 lo0 UHS 0 0 lo0 isp1_gw x.x.x.x UH 1 0 ng0 Запускаю два ната на алиасах х.х.х.х порт 8778 и 192.168.200.23 порт 8668 пишу правила типа: table(0) - список городских сетей # Весь городской трафик на нат (ISP1) ipfw add divert 8778 ip from 192.168.255.0/24\{4-20\} to table\(0\) # Этим нужен толстый канал, весь трафик на нат (ISP1) ipfw add divert 8778 ip from 192.168.255.0/24\{2-3\} to any # Внешний трафик на нат (ISP2) ipfw add divert 8668 ip from 192.168.255.0/24\{4-20\} to any # Форвардим после ната на ISP1 ipfw add fwd isp1_gw ip from x.x.x.x to any # Форвардим после ната на ISP2 ipfw add fwd 192.168.200.2 ip from 192.168.200.23 to any # Входящие с ISP1 в нат ipfw add divert 8778 ip from any to x.x.x.x # Входящие с ISP2 в нат ipfw add divert 8668 ip from any to 192.168.200.23 В итоге форвард на ISP2 вообще не работает, вернее он форвардит не на тот интерфейс, т.к, форвард использует локальную таблицу маршрутизации: man ipfw: If ipaddr is not a local address, then the port number (if speci- fied) is ignored, and the packet will be forwarded to the remote address, using the route as found in the local routing table for that IP. Тогда спрашивается, зачем он вообще нужен? Почему он форвардит не на интерфейс, а по таблице маршрутизации? Получается, что пакет с натовского адреса улетает на шлюз по умолчанию, а не на тот интерфейс, к которому этот адрес привязан. Каким образом можно реализовать данную схему, как сказать что все пакеты с такого-то адреса надо форвардить на конкретный шлюз через конкретный интерфейс, не используя локальную таблицу маршрутизации (шлюз по умолчанию)? Или может быть я вообще ничего не понял в Policy Based Route... Тогда поправьте и направьте меня на путь истинный. До свидания, Alexander. --- GoldED+/W32 1.1.5-30228 * Origin: Homenet Gate (2:5054/75.1) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/2775423a8aeb.html, оценка из 5, голосов 10
|