Навигация |
ГлавнаяФотогалереяКарта сайтаСтатьиМузыкаФильмыРейтинг контентаИнформация о сервереТемператураОбратная связь![]() |
Свежие записи |
Что делать после приобретения оружияКак получить лицензию на оружиеРадиохоббиВышло обновление iOS 6.1Душевный блатнячок |
Комменты |
Теги |
Друзья |
![]() ![]() ![]() ![]() |
Kernel NAT FreeBSD
Ноября
2011 года
01
2011 года
Теги: freebsd, Раздел: odmin.info ![]() ![]() ![]() |
Просмотров: 7441 |
И так, приступим! Описание задачи:
Имеем две сетевухи, re0 - Internet и rl0 - LAN, хотим загонять инет из внешнего источника в re0 и раздавать юзерам в сети, подключенным к rl0, помимо этого требуется проверка подлинности юзера, которую реализуем посредством VPN-сервера и требуется чтобы определенные пользователи имели прямой доступ в инет без VPN.
Собираем ядро по статье Сборка ядра FreeBSD, но с дополнительными опциями:
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100
options IPDIVERT
options IPFIREWALL_FORWARD
options DUMMYNET
options HZ=1000
options IPFIREWALL_NAT
options LIBALIAS
options NETGRAPH
options NETGRAPH_ETHER
options NETGRAPH_SOCKET
options NETGRAPH_TEE
firewall_enable="YES"
firewall_logging="YES"
firewall_script="/etc/rules"
После установки ядра вы потеряете доступ по SSH, т.к. по умолчанию в данной конфигурации IPFW закрывает все порты!!!
Рекомендуется работать под консолью!!!
#!/bin/sh
ipfw='/sbin/ipfw -q'
wanip='192.168.0.100'
lan='10.10.10.0/24'
vpn='10.30.1.0/24'
lip='10.10.10'
vpnip='10.30.1'
ifout=re0
ifuser=rl0
$ipfw flush
$ipfw add 100 check-state
#admin ip's - сюда добавляем ip с которых разрешаем доступ из внешки
$ipfw table 1 flush
$ipfw table 1 add 1.2.3.4 #ваш ip 1
$ipfw table 1 add 21.54.62.74 #ваш ip 2
#inet witout vpn - указываем каким ip адресам разрешается доступ в инет без vpn
$ipfw table 2 flush
$ipfw table 2 add 10.10.10.20
$ipfw table 2 add 10.10.10.21
#admin ip's rights - права для админских ip
$ipfw add allow tcp from "table(1)" to me 21,20,22,3306,1723
$ipfw add allow tcp from me to "table(1)" keep-state
$ipfw add allow icmp from "table(1)" to me via $ifout
$ipfw add allow icmp from me to "table(1)" via $ifout
#right for all - права для всех
$ipfw add allow tcp from any to me 80 keep-state #в данном случае открыт только 80й порт
#nat config - конфигурируем NAT
$ipfw nat 1 config log if $ifout same_ports deny_in
$ipfw add nat 1 ip from any to any via $ifout
#from localnet to server - разрешаем все локальным ip адресам
$ipfw add allow ip from $lan to me
$ipfw add allow ip from me to $lan
#inet without vpn rules - разрешаем инет без vpn для тех, кто в таблице 2
$ipfw add allow ip from "table(2)" to any
$ipfw add allow ip from any to "table(2)"
#vpn user rights - разрешаем vpn'овским юзерам доступ куда угодно
$ipfw add allow ip from 10.30.1.10 to any
$ipfw add allow ip from any to 10.30.1.10
$ipfw add allow ip from 10.30.1.11 to any
$ipfw add allow ip from any to 10.30.1.11
$ipfw add allow ip from 10.30.1.12 to any
$ipfw add allow ip from any to 10.30.1.12
# chmod 777 /etc/rules
Выполним файл правил файервола для примения правил:
# /etc/rules
Удачи!!!
seqular from http://litl-admin.ru