The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"FreeBSD 10.2 GRE IPFW+NAT или PF"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (VPN)
Изначальное сообщение [ Отслеживать ]

"FreeBSD 10.2 GRE IPFW+NAT или PF"  +/
Сообщение от rtroll (ok) on 10-Дек-15, 08:32 
Господа, бьюсь уже 3-юю неделю.
Суть проблемы:
есть предприятие, к которому нужно коннектиться по VPN+RDP.
схема:
Интернет -> FreeBSD 10.2 (Шлюз, Sendmail) -> LAN предприятия -> Win2k3 (PPTP+DHCP+RDP)
На данный момент стоит фря 8.2, на ней, вышеуказанная схема, работает через IPFW.

Стала задача поставить новый/более "мощный" в смысле конфигурации сервер, на который накатил FreeBSD 10.2, поднял всё необходимое, за исключением возможности подключения к LAN из вне.

Первую неделю воевал с IPFW+NAT - тишина.
########################################################
rc.conf
########################################################
#Внешний интерфейс
ifconfig_re0="inet 10.10.13.196 netmask 255.255.255.0"
#Локальный интерфейс
ifconfig_rl0="inet 192.168.1.110 netmask 255.255.255.0"
firewall_logif="YES"
defaultrouter="10.10.13.1"
sshd_enable="YES"

firewall_enable="YES"
firewall_nat_enable="YES"
firewall_script="/etc/ipfw.rules"
firewall_type="Open"
firewall_quiet="YES"
firewall_logging="NO"

natd_program="/sbin/natd"
natd_enable="YES"
natd_interface="re0"
natd_flags="-s -m -u -f /etc/natd.conf"
########################################################
########################################################
ipfw.rules
########################################################
#!/bin/sh

fwcmd="/sbin/ipfw"
outer_ip="10.10.13.196"
inner_ip="192.168.1.110"
inner_net="192.168.1.0/24"
nat_port="8668"
$fwcmd -f flush

# divert natd all via external iface
$fwcmd add 6 divert 8668 ip from any to any via re0
$fwcmd add 7 allow tcp from any to 10.10.13.196 3389 via any
$fwcmd add 7 deny tcp from any to any 3389 via re0

# loopback
$fwcmd add 8 allow tcp from any 1723 to any
$fwcmd add 8 allow gre from any to any
$fwcmd add 8 allow tcp from any to any 1723

# checkstate
$fwcmd add 1010 check-state

# skippers
$fwcmd add 1020 skipto 2000 all from any to any via re0
$fwcmd add 1030 skipto 3000 all from any to any via rl0

# re0 - divert incoming
$fwcmd add 2110 skipto 2900 all from any to $outer_ip in via re0
$fwcmd add 2150 allow tcp from any to $inner_net established in via re0

$fwcmd add 2152 allow udp from any 53 to $inner_net in via re0
$fwcmd add 2155 allow tcp from any 53 to $inner_net in via re0
$fwcmd add 2156 allow udp from any 42 to $inner_net in via re0

# re0 - divert outgoing
$fwcmd add 2200 skipto 2900 all from $outer_ip to any out via re0
$fwcmd add 2250 allow tcp from $outer_ip to any out via re0 established
$fwcmd add 2251 allow tcp from $outer_ip to any out via re0 setup

# re0 - local
$fwcmd add 2900 allow tcp from $outer_ip to any established via re0
$fwcmd add 2901 allow tcp from any to $outer_ip established via re0
$fwcmd add 2902 allow tcp from $outer_ip to any via re0 setup
$fwcmd add 2910 allow udp from $outer_ip to any out via re0 keep-state
$fwcmd add 2920 allow icmp from any to any via re0


# FORWARD ALL TO OUR PROXY
$fwcmd add 3490 skipto 3510 tcp from any to any in via rl0
$fwcmd add 3500 fwd 127.0.0.1,3128 tcp from $inner_net to any 80,81 in via rl0
$fwcmd add 3510 allow all from any to any via rl0
########################################################
########################################################
natd.conf
########################################################
redirect_proto gre 192.168.1.10
redirect_port tcp 192.168.1.10:1723 1723
redirect_port tcp 10.10.13.196:25 2525
########################################################
########################################################


--------------------------------------------------------
Вторую неделю боролся с PF
########################################################

rc.conf
########################################################
#Внешний интерфейс
ifconfig_re0="inet 10.10.13.196 netmask 255.255.255.0"
#Локальный интерфейс
ifconfig_rl0="inet 192.168.1.110 netmask 255.255.255.0"
firewall_logif="YES"
defaultrouter="10.10.13.1"
sshd_enable="YES"

pf_enable="YES"
pf_rules="/etc/pf.conf"
########################################################
########################################################
pf.conf
########################################################
ext_if="re0"
int_if="rl0"
lan="192.168.1.0/24"
ext_ip="10.10.13.196"
tcp_services="{ 22, 25, 80, 110, 443, 8080, 10000, 1723, 9090, 5222, 5223, 7777, 7443, 7070, 1194, 3389 }"
udp_services="{ 53, 514 }"
table <blacklist> persist file "/etc/blacklist.ip"
set skip on lo0
set loginterface $ext_if
set block-policy return
scrub in all
nat on $ext_if from !($ext_if) -> ($ext_if:0)

nat on $ext_if inet proto tcp from  $lan to any port $tcp_services -> $ext_if
nat on $ext_if inet proto udp  from $lan to any port $udp_services -> $ext_if
nat on $ext_if inet proto icmp  from $lan to any  -> $ext_if

rdr on $ext_if proto tcp from any to any port 3389 -> 192.168.1.10
rdr on $ext_if proto tcp from any to any port 1723 -> 192.168.1.10
rdr on $ext_if proto gre -> 192.168.1.10

no nat on $ext_if proto gre all
no nat on $ext_if proto tcp from any to any port = 1723
no nat on $ext_if proto tcp from any port = 1723 to any

pass quick on $ext_if inet proto tcp from any to any port 1723
pass quick on $ext_if inet proto tcp from any port 1723 to any
pass quick inet proto gre to any keep state
pass proto 47 all keep state

pass in on $ext_if proto tcp from any to $ext_if port $tcp_services flags S/SA keep state
pass in on $ext_if proto tcp from any to $ext_if port $udp_services keep state
pass out on $ext_if proto tcp all modulate state flags S/SA
pass out on $ext_if proto {tcp, udp, icmp } all keep state

pass on $int_if all
########################################################

Реакции тоже ни какой - нет подключения и хоть ты кол на голове чеши, но фря не пробрасывает в сеть PPTP соединение.
Помогите разобраться.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "FreeBSD 10.2 GRE IPFW+NAT или PF"  +1 +/
Сообщение от eRIC (ok) on 10-Дек-15, 14:03 
> pass quick inet proto gre to any keep state

pass quick on $ext_if inet proto gre from any to any

смотрели вообще какие правила попадают в ipfw или в pf?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "FreeBSD 10.2 GRE IPFW+NAT или PF"  +/
Сообщение от rtroll (ok) on 10-Дек-15, 14:16 
> pass quick on $ext_if inet proto gre from any to any
> смотрели вообще какие правила попадают в ipfw или в pf?

так я тоже ставил - реакции никакой

через tcpdump -ni re0 tcp port 1723 or proto gre
вижу что идёт подключение по 1723, но толку 0
видимо gre не проваливается куда надо

сейчас собираю ядро с device gre, попробую снова.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

6. "FreeBSD 10.2 GRE IPFW+NAT или PF"  +/
Сообщение от eRIC (ok) on 10-Дек-15, 16:05 
>> pass quick on $ext_if inet proto gre from any to any
>> смотрели вообще какие правила попадают в ipfw или в pf?
> так я тоже ставил - реакции никакой
> через tcpdump -ni re0 tcp port 1723 or proto gre
> вижу что идёт подключение по 1723, но толку 0
> видимо gre не проваливается куда надо
> сейчас собираю ядро с device gre, попробую снова.

раньше и давным давно помнится pf не мог работать с GRE трафиком и требовался изврат с frickin pptp proxy(который давно помер в портах). текущее дело с pf не могу сказать точно и проверить, как бы PPTP давно как не айс :D :)

ipfw вроде как должен справляться так имеется в наличии есть alias_pptp. убери лишние правила на время проверки и микс разных натов

глянь так же:
http://startext.tomsk.ru/node/125
http://shurik.kiev.ua/blog/index.php?/archives/9-FreeBSD_i_G...
http://it-e.ru/blogs/administrirovanie/probros-trafika-pptp-...

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

7. "FreeBSD 10.2 GRE IPFW+NAT или PF"  +/
Сообщение от rtroll (ok) on 10-Дек-15, 16:13 
> раньше и давным давно помнится pf не мог работать с GRE трафиком
> и требовался изврат с frickin pptp proxy(который давно помер в портах).
> текущее дело с pf не могу сказать точно и проверить, как
> бы PPTP давно как не айс :D :)

про pptp знаю... сейчас это нужно на некоторое время, потом буду OpenVPN поднимать либо IPsec.

> ipfw вроде как должен справляться так имеется в наличии есть alias_pptp. убери
> лишние правила на время проверки и микс разных натов

Да, сам уже думал об этом. Алиас подгружен.

Появилась мысль, что сам w2k3 не пропускает. Завтра попробую ещё с ним по колдовать.
Пока спасибо.

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

9. "FreeBSD 10.2 GRE IPFW+NAT или PF"  +/
Сообщение от rtroll (ok) on 11-Дек-15, 14:47 
> глянь так же:
> http://startext.tomsk.ru/node/125
> http://shurik.kiev.ua/blog/index.php?/archives/9-FreeBSD_i_G...
> http://it-e.ru/blogs/administrirovanie/probros-trafika-pptp-...

К сожалению ни один из вариантов не сработал (
tpc 1723 передаётся, а вот gre ни в какую не хочет.

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

3. "FreeBSD 10.2 GRE IPFW+NAT или PF"  +/
Сообщение от rtroll (ok) on 10-Дек-15, 14:45 
Пока ничего не помогло (
Пробовал переписывать правила по различным примерам, но результат всё тот же=0

> смотрели вообще какие правила попадают в ipfw или в pf?

Подскажите, как это сделать.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

4. "FreeBSD 10.2 GRE IPFW+NAT или PF"  +/
Сообщение от Сергей (??) on 10-Дек-15, 14:49 
> Пока ничего не помогло (
> Пробовал переписывать правила по различным примерам, но результат всё тот же=0
>> смотрели вообще какие правила попадают в ipfw или в pf?
> Подскажите, как это сделать.

В случае ipfw, нафиг вы одновременно ядерный включили нат и в виде демона? Если проходит pptp, т.е. организована VPN, то зачем пробрасывать rdp, действующие правила смотреть через ipfw -a list

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "FreeBSD 10.2 GRE IPFW+NAT или PF"  +/
Сообщение от rtroll (ok) on 10-Дек-15, 15:21 
> В случае ipfw, нафиг вы одновременно ядерный включили нат и в виде демона?

Вы имеете в виду это?:
natd_program="/sbin/natd"
natd_enable="YES"
natd_interface="re0"
natd_flags="-s -m -u -f /etc/natd.conf"

Без него не могу достучаться до сервера по 22, да и в мир он перестаёт пропускать, т.к. является ещё и шлюзом.

> Если проходит pptp, т.е. организована VPN, то зачем пробрасывать rdp

с этим понятно, затупил, 3389 пройдёт по 1723

Ядро собрано с опциями:
#####################################
options LIBALIAS
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_NAT
options IPDIVERT
options DUMMYNET
options MROUTING

device pf
device pflog
device pfsync
#####################################

Если в rc.conf оставлять только PF, то всё кроме pptp работает
--------------------------------------------
вот что пишет tcpdump на внешний re0
15:46:32.952291 IP 37.204.151.153.3593 > 10.10.13.196.1723: Flags [S], seq 3970020241, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
15:46:35.954124 IP 37.204.151.153.3593 > 10.10.13.196.1723: Flags [S], seq 3970020241, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
15:46:41.953933 IP 37.204.151.153.3593 > 10.10.13.196.1723: Flags [S], seq 3970020241, win 8192, options [mss 1460,nop,nop,sackOK], length 0

и на внутренний
15:48:45.389871 IP 192.168.1.28.51623 > 192.168.1.110.1723: Flags [S], seq 1813963124, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
15:48:45.389931 IP 192.168.1.110.1723 > 192.168.1.28.51623: Flags [R.], seq 0, ack 1813963125, win 0, length 0
15:48:45.891848 IP 192.168.1.28.51623 > 192.168.1.110.1723: Flags [S], seq 1813963124, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
15:48:45.891906 IP 192.168.1.110.1723 > 192.168.1.28.51623: Flags [R.], seq 0, ack 1, win 0, length 0
15:48:46.391829 IP 192.168.1.28.51623 > 192.168.1.110.1723: Flags [S], seq 1813963124, win 8192, options [mss 1460,nop,nop,sackOK], length 0
15:48:46.391884 IP 192.168.1.110.1723 > 192.168.1.28.51623: Flags [R.], seq 0, ack 1, win 0, length 0

при попытке подключения по pptp с удалённого ip на внешний, показывает, что сам порт 1723 пробрасывается, но соединения с VPN сервером на Win2k3 нет((
15:57:22.900963 IP 37.204.151.153.5636 > 192.168.1.10.1723: Flags [S], seq 550181637, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
15:57:25.896837 IP 37.204.151.153.5636 > 192.168.1.10.1723: Flags [S], seq 550181637, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
15:57:31.901522 IP 37.204.151.153.5636 > 192.168.1.10.1723: Flags [S], seq 550181637, win 8192, options [mss 1460,nop,nop,sackOK], length 0

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

8. "FreeBSD 10.2 GRE IPFW+NAT или PF"  +1 +/
Сообщение от кегна on 11-Дек-15, 09:18 
>[оверквотинг удален]
> 0, length 0
> при попытке подключения по pptp с удалённого ip на внешний, показывает, что
> сам порт 1723 пробрасывается, но соединения с VPN сервером на Win2k3
> нет((
> 15:57:22.900963 IP 37.204.151.153.5636 > 192.168.1.10.1723: Flags [S], seq 550181637,
> win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
> 15:57:25.896837 IP 37.204.151.153.5636 > 192.168.1.10.1723: Flags [S], seq 550181637,
> win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
> 15:57:31.901522 IP 37.204.151.153.5636 > 192.168.1.10.1723: Flags [S], seq 550181637,
> win 8192, options [mss 1460,nop,nop,sackOK], length 0

Странные люди... Насобирают солянки из natd, kernel nat, pf, pptp на винде и спрашивают почему не работает....
1. Убрать все виды фаирволов и натов, оставить нативный ipfw+kernel nat.
2. Убрать pptp с винды поднять pptp на фре с помощью mpd.

Профит...

По первому вопросу всё просто:
# наша сеть которую нужно выпустить в интернет
table 2 add 172.16.0.0/21

# внутренние ресурсы которые нету смысла выпускать сквозь nat
table 9 add 8.8.8.8
table 9 add 8.8.8.9
table 9 add 8.8.8.10

#следующие три строчки собственно и есть nat =)
nat 1 config log if em1 reset same_ports
add 1200 nat 1 ip from table\(2\) to not table\(9\) via em1
add 1300 nat 1 ip from any to 8.8.8.8 via em1

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

12. "FreeBSD 10.2 GRE IPFW+NAT или PF"  +/
Сообщение от tootsie on 14-Дек-15, 13:47 
>[оверквотинг удален]
> 0, length 0
> при попытке подключения по pptp с удалённого ip на внешний, показывает, что
> сам порт 1723 пробрасывается, но соединения с VPN сервером на Win2k3
> нет((
> 15:57:22.900963 IP 37.204.151.153.5636 > 192.168.1.10.1723: Flags [S], seq 550181637,
> win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
> 15:57:25.896837 IP 37.204.151.153.5636 > 192.168.1.10.1723: Flags [S], seq 550181637,
> win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
> 15:57:31.901522 IP 37.204.151.153.5636 > 192.168.1.10.1723: Flags [S], seq 550181637,
> win 8192, options [mss 1460,nop,nop,sackOK], length 0

Провайдер точно пропускает?

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

13. "FreeBSD 10.2 GRE IPFW+NAT или PF"  +/
Сообщение от rtroll (ok) on 14-Дек-15, 15:11 
> Провайдер точно пропускает?

Да, пускает. Грешу на w2k3. Но найти там разрешение, либо запрет на конкретный хост или IP пока не смог.

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

14. "FreeBSD 10.2 GRE IPFW+NAT или PF"  +/
Сообщение от tootsie on 15-Дек-15, 08:35 
>> Провайдер точно пропускает?
> Да, пускает. Грешу на w2k3. Но найти там разрешение, либо запрет на
> конкретный хост или IP пока не смог.

А подключаться по vpn к шлюзу не хочешь?
А через впн тебе и rdp  к w2003 пожалуйста

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

15. "FreeBSD 10.2 GRE IPFW+NAT или PF"  +/
Сообщение от rtroll (ok) on 15-Дек-15, 13:10 
> А подключаться по vpn к шлюзу не хочешь?
> А через впн тебе и rdp  к w2003 пожалуйста

Планирую так сделать, но это только после НГ, в виду независящих от меня причин.
А в данный момент необходим именно проброс 1723 и GRE.
В настоящее время через шлюз проходит 1723 до внутреннего интерфейса, а GRE молчит.
Если же из локалки через шлюз нырять наружу, то и 1723 и GRE проходят без проблем.

Сейчас перерыл кучу всякого, на предмет проброса pptp и gre, но результат всё тот же.
К сожалению инфы по FreeBSD 10.2 крайне мало.

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

10. "FreeBSD 10.2 GRE IPFW+NAT или PF"  +/
Сообщение от tootsie on 12-Дек-15, 15:49 

> firewall_nat_enable="YES"
> firewall_script="/etc/ipfw.rules"
> firewall_type="Open"

где раздел Open в скрипте?

> natd_program="/sbin/natd"
> natd_enable="YES"

Это к чему если ранее включен firewall_nat_enable="YES"

>[оверквотинг удален]
> $fwcmd add 3510 allow all from any to any via rl0
> ########################################################
> ########################################################
> natd.conf
> ########################################################
> redirect_proto gre 192.168.1.10
> redirect_port tcp 192.168.1.10:1723 1723
> redirect_port tcp 10.10.13.196:25 2525
> ########################################################
> ########################################################

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

11. "FreeBSD 10.2 GRE IPFW+NAT или PF"  +/
Сообщение от ALex_hha (ok) on 13-Дек-15, 13:40 
И эти люди еще говорят, что ipfw более удобный и логичный, чем iptables :)

На CentOS достаточно загрузить следующие модули - nf_nat_pptp, nf_conntrack_pptp, nf_nat_proto_gre nf_conntrack_proto_gre

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

16. "FreeBSD 10.2 GRE IPFW+NAT или PF"  +/
Сообщение от Grinya64 on 15-Дек-15, 13:34 
>[оверквотинг удален]
> flags S/SA keep state
> pass in on $ext_if proto tcp from any to $ext_if port $udp_services
> keep state
> pass out on $ext_if proto tcp all modulate state flags S/SA
> pass out on $ext_if proto {tcp, udp, icmp } all keep state
> pass on $int_if all
> ########################################################
> Реакции тоже ни какой - нет подключения и хоть ты кол на
> голове чеши, но фря не пробрасывает в сеть PPTP соединение.
> Помогите разобраться.

У меня вся GRE IPFW+NAT связка работала так, нужно сделать второй нат
NAT VPN Out
    ${fwcmd} nat 10 config if ${eint}
    ${fwcmd} add nat 10 gre from any to any
    ${fwcmd} add nat 10 tcp from ${ipv} to any dst-port pptp,1396,53,21
    ${fwcmd} add nat 10 tcp from any pptp,1396,53,21 to any
где {ipv} список ip разрешённых для работы с внешним vpn сервером.
natd не нужен, для работы по 22 порту достаточно
# rulezz for sshit table
    ${fwcmd} add deny tcp from table\(0\) to me dst-port 22

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

17. "FreeBSD 10.2 GRE IPFW+NAT или PF"  +/
Сообщение от Grinya64 on 15-Дек-15, 13:46 
по ssh забыл нужно после запрещающих правил на которых ставится бан, естественно добавить
# SSH for localhost allow
    ${fwcmd} add allow tcp from any to me 22
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру