23 августа 2012 г.

Интернет шлюз на FreeBSD 6.2

rc.conf:

hostname="router"
ifconfig_rl0="inet 192.168.1.250 netmask 255.255.255.0" # Inet
ifconfig_sis0="inet 192.168.0.1 netmask 255.255.255.0" # Local
gateway_enable="YES" #Включение режима шлюза
keymap="ru.koi8-r"
usbd_enable="YES"
sshd_enable="YES" # no comments
ppp_enable="YES" # Автоподключение при загрузке
ppp_user="root"
ppp_mode="dial"
ppp_profile="provider" # Имя подключения
natd_enable="YES" # Включаем нат
natd_interface="rl0" # Инерфейс откуда берётся инет
firewall_enable="YES" # Включения фаервола
firewall_script="/etc/ipfw.sh" # Файл с правилами

Сборка ядра:

options IPFIREWALL # Фаерволл
options IPFIREWALL_VERBOSE # Включение логов
options IPFIREWALL_DEFAULT_TO_ACCEPT # Правило по умолчанию
options IPDIVERT # нат

PPPoE соединение:

default:
< Табуляция > set log Phase tun command
< Табуляция > set ifaddr 10.0.0.0/0 10.0.0.2/0

provider:
< Табуляция > set device PPPoE:rl0
< Табуляция > set authname "garantpark"
< Табуляция > set authkey "******"
< Табуляция > set dial
< Табуляция > set login
< Табуляция > add default HISADDR

IPFW:

chmod 100 /etc/ipfw.sh 

/etc/ipfw.sh:

#!/bin/sh
ipfw -q -f flush
cmd="ipfw -q add"

$cmd check-state
$cmd allow ip from 192.168.0.0/24 to me ssh keep-state via sis0
$cmd allow ip from any to 90.188.63.222 keep-state
$cmd allow icmp from any to any keep-state
$cmd deny ip from any to any