Всем хай!..Имеется выход в инет.
Необходимо поднять гейт.
Я делаю так:
Гейт (настраиваемая фря) - 192.168.13.1
Есть сетки
192.168.0.0/24
192.168.1.0/24
192.168.10.0/24
192.168.13.0/30
192.168.20.0/24
192.168.21.0/24
192.168.22.0/24
192.168.23.0/24
192.168.60.0/24
У каждой подсети свой роутер. Адрес роутера имеет вид: 192.168.сеть.70
rl0 - внеш.ний.ай.пи - внешний интерфейс
rl1 - 192.168.13.1 - внутренний интерфейс
Ядро собрано с опциями:
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=20
options IPFIREWALL_FORWARD
options IPDIVERT
/etc/rc.conf
Код: Выделить всё
static_routes="lan0 lan1 lan10 lan13 lan20 lan21 lan22 lan23 lan60"
route_lan0="-net 192.168.0.0/24 192.168.0.70 -interface rl1"
route_lan1="-net 192.168.1.0/24 192.168.1.70 -interface rl1"
route_lan10="-net 192.168.10.0/24 192.168.10.250 -interface rl1"
route_lan13="-net 192.168.13.0/30 192.168.13.2 -interface rl1"
route_lan20="-net 192.168.20.0/24 192.168.20.250 -interface rl1"
route_lan21="-net 192.168.21.0/24 192.168.21.250 -interface rl1"
route_lan22="-net 192.168.22.0/24 192.168.22.70 -interface rl1"
route_lan23="-net 192.168.23.0/24 192.168.23.70 -interface rl1"
route_lan60="-net 192.168.60.0/24 192.168.60.250 -interface rl1"
defaultrouter="вне.шний.гейт.прова"
hostname="alisa.local"
ifconfig_rl0="inet вне.шний.ай.пи netmask 255.255.255.0"
ifconfig_rl1="inet 192.168.13.1 netmask 255.255.255.252"
gateway_enable="YES"
firewall_enable="YES"
firewall_logging="YES"
firewall_script="/etc/ipfw.sh"
natd_enable="YES"
natd_interface="rl0"
natd_flags="-m -u"
/etc/ipfw.sh
Код: Выделить всё
IfOut="rl0"
IpOut="вне.шний.ай.пи/30"
IfIn="rl1"
IpIn="192.168.13.1/30"
mail="22,25,53,110,143,465,585,993,995"
http="53,80,1328,8080,5190,909"
prts=1025-65534
ipfw -f flush
ipfw -f pipe flush
ipfw -f queue flush
ipfw add allow ip from any to any via lo0
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 deny all from 127.0.0.0/8 to any in recv $IfOut
ipfw add deny all from 10.0.0.0/8 to any in recv $IfOut
ipfw add deny all from 172.16.0.0/16 to any in recv $IfOut
ipfw add deny all from 192.168.0.0/16 to any in recv $IfOut
#ipfw add allow all from 192.168.0.0/16 to any in recv $IfIn
#ipfw add allow all from any to 192.168.0.0/16 out xmit $IfIn
ipfw add divert natd all from 192.168.0.0/16 to not 192.168.0.0/16 out xmit $IfOut
ipfw add divert natd all from any to $IpOut in recv $IfOut
ipfw add allow tcp from $IpOut $prts to any $mail, $http out xmit $IfOut
ipfw add allow tcp from any $mail,$http to $IpIn $prts in recv $IfOut established
echo "DNS"
ipfw add allow udp from $IpOut $prts to any 53 xmit $IfOut
ipfw add allow udp from any 53 to $IpOut $prts in recv $IfOut
ipfw add allow udp from any 53 to 192.168.0.0/16 in recv $IfOut
${ipfw} add allow icmp from any to me icmptypes 0,3,4,11,12 in
${ipfw} add allow icmp from any to 192.168.0.0/16 icmptypes 0,3,4,11,12 in recv $IfOut
${ipfw} add allow icmp from me to any icmptypes 3,8,12 out
echo "ssh"
ipfw add allow tcp from any to $IpIn 909 in recv $IfIn
ipfw add allow tcp from $IpIn 909 to any out xmit $IfIn established
# block and log
ipfw add deny log tcp from any to $IpOut in recv $IfOut setup
echo "########### BEGIN USERS ###############################"
ipfw add allow tcp from 192.168.0.38 $mail,$http to any out xmit $IfOut
ipfw add allow tcp from any to 192.168.0.38 $mail,$http in recv $IfOut established
.....
echo "########### END USERS ###############################"
Это уже с самого нуля переписанные правила.
По предыдущему варианту правил убежало 700 метров трафика =(((
Отсюда вопросы: почему по netstat -nr показываются маршруты в локальную сеть через внешний интерфейс (rl0)?
И будет ли это работать? =)
И как правильно раздавать инет юзерам. Т.е. - так, как я это написал или как-то по-другому?
Надо ли вообще писать роуты?
Т.е. это же гейт.
К нему приходят пакеты. А он уже их натит, фаерволит и передает (если они прошли) defaultrouter'у
Т.е. маршруты-то до других сетей ему ненужны. Верно?
Но с другой стороны, если я не пишу маршрутов, то и не могу с гейта пинговать машины в сети.
...
Блин.
Ничего не понимаю ВООБЩЕ.
Сейчас снова сидел с Фряхой. Толку - ноль. Вообще запутался.
Прописал маршруты на локальные сетки, а фряха машины внутри сети вообще не видит!
Внешние айпишники пингует, а внутренние нет.
И еще...
Убрал вообще нафиг статические маршруты из /etc/rc.conf от греха подальше.