Ситуация следующая:
Имеем маленький сервачек под FreeBSD 8.0-RELEASE-p2, в нем стоит 1 встроенная сетевуха, 2 PCI и 1 Wi-Fi. Встроенная сетевуха - внутренняя сеть, все остальное - это внешние интерфейсы. С одной сетевухи и с Wi-Fi мы забираем инет и ещё одна сетевуха - это отдельная сетка без инета с необходимыми нам ресурсами, там нет шлюза, простая сеть.
Короче, последней сетевухи не было раньше, просто недавно появилась потребность ещё в одно сети, вот тогда и появилась эта сетевуха. До этого этот сервак служил нам только для того, чтобы забирать необходимые порты из инета через медь, а остальное через WiFi, теперь нужно ещё иметь доступ к ещё одной сети, но вот че-то не получается перекидывать пакеты туда.
Блин, наверное непонятно объяснил, ща по конфигу понятнее будет. Кое-где я буду в коде комментировать
Код: Выделить всё
### Makros ###
ext_if="xl0" -внешняя сетевуха
int_if="bge0" - внутренная сетевуха
pci_if="re0" - дополнительная сеть
wlan="wlan0" - виртуальная беспроводная сетевуха
vpn_if="tun0" - виртуальная сетевуха OpenVPN
vpn2_if="tun1" - виртуальная сетевуха OpenVPN
int_lan="192.168.10.0/24" - внутренняя сеть
pci_lan="192.168.100.0/24" - дополнительная сеть
pci_ip="192.168.100.193" - адрес в дополнительной сети
int_ip="192.168.10.1" - внутренний адрес
ext_gw="192.168.2.1" - "медный" шлюз
wlan_gw="10.0.98.1" - "вайфайный" шлюз
ath="ath0" - физическая беспроводная сетевуха
allow_ports="{ 43, 53, 80, 137, 138, 139, 443, 445 }" - порты, которые идут через "медь"
allowed_icmp_types="{ echoreq, unreach }"
### GLOBAL OPTIONS ###
set block-policy drop
set skip on lo0
set timeout { frag 10, tcp.established 3600 }
scrub in all fragment reassemble
### Port Forwarding & NAT ###
nat on $wlan from $int_lan to any -> ($wlan)
nat on $ext_if from $int_lan to any -> $ext_if
nat on $pci_if from $int_lan to any -> ($pci_if) - предполагаю, что нат нам нужен в дополнительной сети
### Rules of PACKET FILTER ###
antispoof quick for { $wlan, $int_if, lo0, $vpn_if, $vpn2_if, $ext_if, $pci_if }
block all
### Everything Local ###
pass out on $pci_if from $pci_if to any keep state - разрешаем все исходящие на сетевухи для дополнительной сети
pass out on $wlan from ($wlan) to any keep state
pass out on $ext_if from $ext_if to any keep state
pass out on $ext_if proto gre from ($ext_if) to any
pass in quick on $int_if from $int_lan to $int_if
### Everything for Int LAN ###
pass out on $ext_if from $int_lan to any keep state
pass out on $wlan from $int_lan to any keep state
pass out on $pci_if from $int_lan to any keep state - разрешаем все исходящие из внутренней сети в дополнительную сеть
### Route ### - дальше идут правила маршрутизации и вот я думаю как бы сюда вклиниться, что бы и это все работало (сейчас все работает) и заработала дополнительная сеть
pass out on $wlan route-to ($ext_if $ext_gw) from $ext_if to any
pass out on $ext_if route-to ($wlan $wlan_gw) from ($wlan) to any
pass in on $int_if route-to { ($ext_if $ext_gw), ($wlan $wlan_gw) } round-robin proto { tcp, udp, icmp } from $int_lan to any
pass in quick on $int_if route-to ($ext_if $ext_gw) inet proto { tcp, udp } from $int_lan to any port $allow_ports
pass quick on $ath
pass quick on $int_if
### Everything for OpenVPN ###
pass quick on $vpn_if
pass quick on $vpn2_if
### ICMP ###
pass log inet proto icmp all icmp-type $allowed_icmp_types
В общем хочу иметь доступ в дополнительную сеть через наш маленький шлюз. На своей виндовой тачке я делаю просто:
Код: Выделить всё
route -p add 192.168.100.0 mask 255.255.255.0 192.168.10.1
Люди, хэлп!!!