FreeBSD client OpenVPN

Проблемы с установкой, настройкой и работой системных и сетевых программ.

Модераторы: GRooVE, alexco

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Saver
рядовой
Сообщения: 45
Зарегистрирован: 2009-10-22 11:16:02
Откуда: Vidnoe

FreeBSD client OpenVPN

Непрочитанное сообщение Saver » 2010-03-10 12:13:29

Доброго всем времени суток!

Ситуация следующая - есть сервачек в небольшой конторе с правильной ОС

Код: Выделить всё

uname -r

8.0-RELEASE-p2
Провайдер предоставляет внешний адрес. На сервере стоит OpenVPN серверная часть, файервол PF, а за сервачком уютно устроились виндовые тачки пользователей. Изначально OpenVPN поднял для того, чтобы удаленно админить пользваков, соответственно я на своей виндовой машине запускаю OpenVPN клиент, прописываю в таблице маршрутизации постоянный маршрут в их сеть через ВПН и вперед. Кстати, если сесть за пользовательскую машину, то моя машина рабочая доступна полностью (по крайней мере пробовал NetBIOS, FTP, RDP), при этом ВПН клиент запускать у пользователей не надо, ибо их шлюз знает куда надо роутить данные пакеты.
Все бы хорошо, да потребовалось в удаленном офисе поставить маленький сервачек для видеонаблюдения, ну я тоже туда залил FreeBSD 8.0-RELEASE-p2, все настроил, поставил туда OpenVPN с клиентским конфигом, ВПН поднялся пакетики идут в обе стороны, я со своей рабочей тачки через ВПН вижу эту машинку, пингую, смотрю видео с камер, все хорошо, но потом сел в центральном офисе за пользовательский комп, пинганул удаленный сервер и удивился - пинг не идет, подумал, что лег ВПН, но моя рабочая тачка пингуется, значит все хорошо.
Дальше интереснее...
Запустил tcpdump на центральном сервере, пакеты на внутренний интерфейс приходя и уходят через впн к удаленному серверу, так, уже хорошо, пошли дальше. Запустил tcpdump на ВПН интерфейсе удаленного сервера, пакеты приходят, но в ответ тишина. Хотя, если его пингануть с сервера или с той машины, где поднят ВПН, то пинги приходят на тот же интерфейс и ответ на них уходит обратно, т.е. все хорошо.
Подумал, что может проблема с PF, я его начал осваивать только с начала этого года, и решил, что может косяк где-то в нем. Проверить легко. Забэкапил файлик с правилами и сделал новый с единственным правилом:

Код: Выделить всё

pass all
Изменений не последовало.
Вспомнил, что накуралесил всяких разных настроек в sysctl.conf, так же убрал все в default, но снова нифига.
Короче, я перепробовал всякие различные настройки и танцевал с бубном, но никак не могу понять в чем дело. Похожая ситуация у меня была с Windows 7, когда я её поствил на домашнем компе, а настраивал удаленно. В 7-ке хитрожопый файервол. Я там сделал правило, чтобы по RDP пускал отовсюду и все. Получилось так, что я через свой ВПН не мог пинговать 7-ку (не домашняя сеть), а по RDP нормально на неё захожу, хотя из домашней сети Windows 7 прекрасно пингуется.

Далее прилагаю конфиги клиентской тачки, потому что думаю, что проблема в ней, ну , вроде как винда хрюшка пингуется через ВПН, а фря нет : ((

Конфиг PF

Код: Выделить всё

### Makros ###

ext_if="rl0"

int_if="bridge0"

video_if="vr0"

vpn_if="tun0"

ath="ath0"

wlan="wlan0"

rl="rl1"

int_lan="192.168.3.0/24"

video_lan="192.168.2.0/24"

int_ip="192.168.3.1"

ext_ip="192.168.6.195"

video="192.168.2.2"

allowed_icmp_types="{ echoreq, unreach }"


### GLOBAL OPTIONS ###

set loginterface rl0

set block-policy drop

set skip on lo0

set timeout { frag 10, tcp.established 3600 }

scrub in all fragment reassemble



### Port Forwarding & NAT ###

rdr on $vpn_if proto tcp from any to ($vpn_if) port 6100 -> $video port 6100

rdr on $vpn_if proto tcp from any to ($vpn_if) port 80 -> $video port 80

nat on $ext_if from $int_lan to any -> ($ext_if)


### Rules of PACKET FILTER ###

antispoof quick for { $ext_if, $int_if, lo0, $vpn_if, $video_if, $ath, $wlan, $rl }

block all

pass in on $ext_if proto icmp from any to $ext_if keep state

pass in on $vpn_if proto icmp from any to $vpn_if keep state

#pass in on $ext_if proto tcp from any to $ext_if port 22 synproxy state


### Everything Local ###

pass out on $ext_if keep state


### Everything for Int LAN ###

pass quick on $int_if

pass quick on $video_if

pass quick on $ath

pass quick on $wlan

pass quick on $rl

### Everything for OpenVPN ###

pass quick on $vpn_if


### ICMP ###

pass log inet proto icmp all icmp-type $allowed_icmp_types

rc.conf

Код: Выделить всё

### System Settings ###

sshd_enable="YES"

keymap="ru.koi8-r"

cron_enable="NO"


### Sendmail Settings ###

sendmail_enable="NO"

sendmail_submit_enable="NO"

sendmail_outbound_enable="NO"

sendmail_msp_queue_enable="NO"


### Security Settins ###

tcp_extension="NO"

tcp_drop_synfin="NO"

icmp_drop_redirect="YES"

icmp_log_redirect="YES"

icmp_bmcastecho="NO"


### OpenVPN Settings ###

openvpn_enable="YES"

openvpn_if="tun"

openvpn_configfile="/etc/openvpn/client.conf"

openvpn_dir="/etc/openvpn"


### Packet Filter Settings ###

pf_enable="YES"

pflog_enable="YES"

pf_rules="/etc/pf.conf"

pfsync_enable="YES"


### Network Settings ###

network_interfaces="rl0 rl1 vr0 ath0 wlan0 lo0 tun0"

hostname="krasota.baufasad.ru"

gateway_enable="YES"

inetd_enable="YES"

hostapd_enable="YES"

dhcpd_enable="YES"

dhcpd_ifaces="bridge0"

ifconfig_rl0="inet 192.168.6.150 netmask 255.255.255.0"

defaultrouter="192.168.6.1"

ifconfig_vr0="inet 192.168.2.1 netmask 255.255.255.0"

ifconfig_rl1="up"

wlans_ath0="wlan0"

create_args_wlan0="wlanmode hostap"

ifconfig_wlan0="ssid krasota mode 11b up"

cloned_interfaces="bridge0"
#ifconfig_bridge0="addm wlan0 addm rl1 up"

ifconfig_bridge0="inet 192.168.3.1 netmask 255.255.255.0 addm wlan0 addm rl1 up"

sysctl.conf

Код: Выделить всё

security.bsd.see_other_uids=0

security.bsd.see_other_gids=0

net.inet.ip.portrange.last=48000

#kern.polling.enable=1

kern.ipc.somaxconn=1024

net.inet.tcp.blackhole=2

net.inet.udp.blackhole=1

net.inet.icmp.drop_redirect=1

net.inet.icmp.log_redirect=1

net.inet.ip.redirect=0

net.inet.tcp.sendspace=65536

net.inet.tcp.recvspace=65536

net.link.ether.inet.max_age=1200

net.inet.icmp.maskrepl=0

net.inet.ip.sourceroute=0

net.inet.ip.accept_sourceroute=0

net.inet.icmp.bmcastecho=0

kern.maxprocperuid=1000

net.inet.ip.forwarding=1

net.link.bridge.pfil_bridge=1

net.link.bridge.pfil_member=1
Прошу помощи в разрешении данной проблемы. Проблема конечно не критичная, но все же хочется понять, почему фря не отвечает на пакеты, которые к ней приходят из вне ВПНа.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Saver
рядовой
Сообщения: 45
Зарегистрирован: 2009-10-22 11:16:02
Откуда: Vidnoe

Re: FreeBSD client OpenVPN

Непрочитанное сообщение Saver » 2010-03-18 10:57:49

Ладно, проблему решил... Чисто случайно.
Помогал челу в этой теме http://forum.lissyara.su/viewtopic.php? ... 14&start=0 и понял в чем фишка.
Я на фряшном клиенте не прописал маршрут. Пакет на него приходит, но система не знает как его обратно отправить!!! Можно конечно руками маршрут прописать, но я сделал это так - просто раскоментил строчку в конфиге на сервере и рестартанул OpenVPN

Код: Выделить всё

push "route 192.168.1.0 255.255.255.0"
когда клиент снова подключился к серверу, то уже он сам прописал себе в таблицу маршрутизации маршрут и все.

Тему можно закрывать.