Описание:
Есть FreeBSD 7.2
Стоит BIND, dhcp
нужно средствами ipfw настроить nat в локальную сеть.
я читал что в 7.2 ipfw может натить:
http://www.lissyara.su/?id=1967#ipfw_nat_options
Читал описание дуплил, пробывал, не фига не вышло...
Прошу помощи...
rc.conf
Код: Выделить всё
gateway_enable="YES"
hostname="ultima-net.ru"
ifconfig_em1="DHCP"
keymap="us.unix"
inux_enable="YES"
sshd_enable="YES"
named_enable="YES"
firewall_enable="YES"
firewall_type="/etc/firewall"
dhcpd_enable="YES"
dhcpd_flags="-q"
dhcpd_ifaces="re0"
ifconfig_msk0="inet 10.86.96.2 netmask 255.255.248.0"
defaultrouter="10.86.96.1"
ifconfig_re0="inet 172.16.0.1 netmask 255.255.255.0"
route_00="-net 10.86.0.0/21 10.86.96.1"
route_01="-net 10.86.8.0/21 10.86.96.1"
route_02="-net 10.86.16.0/21 10.86.96.1"
route_03="-net 10.86.24.0/21 10.86.96.1"
route_04="-net 10.86.32.0/21 10.86.96.1"
route_05="-net 10.86.40.0/21 10.86.96.1"
и тд...
static_routes="00 01 02 03 04 05"
re0 - Локальная сеть 172.16.0.1/24
em1 - Внешний интерфейс с серым IP с доступом в интернет
Задача открыть пользователям:
172.16.0.2 - Интернет с интерфейса em1 и локалку с интерфейса msk0
172.16.0.3 - открыть тока подсети (86.110.0.0/255.255.0.0) с интерфейса em1 и с интефрейса msk0 подсеть 10.86.0.0/255.255.0.0
172.16.0.4 - Интернет с интерфейса em1 и локалку с интерфейса msk0 зашейпить канал до 256Кбит\с (шейпить подсети все кроме 10.0.0.0/255.0.0.0 и 86.110.0.0/255.255.0.0).
Вот что я навоял но не работает(ваял без шейпера):
Код: Выделить всё
#!/bin/sh -
# Manual script for ipfw
echo "Checking ng_ipfw..."
kldstatscript=`kldstat | grep ng_ipfw`
if [ "$kldstatscript" = "" ]; then
echo "Starting ng_ipfw..."
kldload ng_ipfw > /dev/null 2>&1
fi
echo -n "Starting firewall..."
ipfw="/sbin/ipfw"
corbina_if="msk0"
spark_if="em1"
lan_if="re0"
${ipfw} -q flush
${ipfw} -q table 1 flush
${ipfw} add allow all from any to any via lo0
${ipfw} add deny all from any to 127.0.0.0/8
${ipfw} add deny all from 127.0.0.0/8 to any in recv $corbina_if
${ipfw} add deny all from 127.0.0.0/8 to any in recv $spark_if
${ipfw} add deny all from 127.0.0.0/8 to any in recv $lan_if
#block
${ipfw} table 2 add 10.175.121.194
${ipfw} add deny all from "table(2)" to any
${ipfw} add check-state
#TABLE 1 !!!!!!!!!!!!!!!!!!!!!!!!!
${ipfw} table 1 add 10.175.100.100
${ipfw} table 1 add 10.175.100.103
${ipfw} table 1 add 10.68.0.146
${ipfw} table 1 add 10.68.0.147
${ipfw} table 1 add 10.68.0.148
${ipfw} table 1 add 10.68.0.149
${ipfw} table 1 add 10.68.0.150
#TABLE 1 !!!!!!!!!!!!!!!!!!!!!!!!!
nat 1 config log if $spark_if reset same_ports deny_in
#Ves dostup TABLE 1
${ipfw} add allow all from "table(1)" to me via $corbina_if
${ipfw} add allow all from me to "table(1)" via $corbina_if
${ipfw} add allow all from 172.16.0.0/24 to me via $lan_if
${ipfw} add allow all from me to 172.16.0.0/24 via $lan_if
${ipfw} add nat 1 ip from any to any via $spark_if
#Na server vse 80 port
${ipfw} add allow tcp from any to me 80 via $corbina_if
${ipfw} add allow tcp from me 80 to any via $corbina_if
${ipfw} add allow tcp from any to me 80 via $spark_if
${ipfw} add allow tcp from me 80 to any via $spark_if
${ipfw} add allow tcp from me to any setup keep-state out
${ipfw} add allow udp from me to any keep-state out
${ipfw} add allow icmp from any to any
${ipfw} add deny log all from any to any