rl0 -> Первый ифайс во вне, rl1 -> Второй ифайс во внеrc.conf:
defaultrouter="${rl1_gateway_ip}"
rc.local:
/sbin/natd -n rl0 -p 8660
/sbin/natd -n rl1 -p 8661
rc.firewall:
${fwcmd} add 1100 divert 8660 tcp from ${local_ip} to not ${rl0_ip} 22,25,53,80,110,6667
${fwcmd} add 1110 fwd ${rl0_gateway_ip} tcp from ${rl0_ip} to not ${local_ip}
${fwcmd} add 1120 divert 8660 all from not ${rl0_ip},${local_ip} to ${rl0_ip}
${fwcmd} add 1150 pass all from any to ${rl0_ip}
${fwcmd} add 1150 pass all from ${rl0_ip} to any
${fwcmd} add 1999 divert 8661 all from ${local_ip} to not ${rl1_ip}
${fwcmd} add 2000 divert 8661 all from not ${rl1_ip},${local_ip}
${fwcmd} add 2010 pass all from any to ${local_ip}
${fwcmd} add 2010 pass all from ${local_ip} to any
${fwcmd} add 2100 pass all from any to ${rl1_ip}
${fwcmd} add 2100 pass all from ${rl1_ip} to any
Правила тестировались на FreeBSD 4.7, 4.8, 4.9, 4.10, c ipfw2. Если у вас с ipfw(1) не работает, попробуйте убрать "not ${ip}"
и вместо него вставить "any". "not" нужен для того чтобы локальные адреса не дивертировались, т.к. нам это не нужно.
Порядковые номера могут быть на ваше усмотрение, рекомендую в начале разрешить трафик lo0, защититься от спуфа,
запретить некоторые типы ICMP, разрешить внутренний трафик и т.д., и т.п.
URL: http://www.opennet.me/openforum/vsluhforumID1/46273.html
Обсуждается: http://www.opennet.me/tips/info/715.shtml