Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Linux и FreeBSD » Общий по FreeBSD » FreeBSD - OpenVPN - не совсем стандартное решение, нужна помощь.

Ответить
Настройки темы
FreeBSD - OpenVPN - не совсем стандартное решение, нужна помощь.

Забанен


Сообщения: 50
Благодарности: 0

Профиль | Цитировать


Здравствуйте, уважаемые участники форума!

Обо всем по порядку. Решил я поднять OpenVPN сервер на FreeBSD, чтобы подключаться к нему из дома, для того, чтобы подключиться к компьютеру на работе. Вот информация об операционной системе:

Код: Выделить весь код
root@test:/usr/home/Pavel # uname -a
FreeBSD test.xxxx.ru 9.1-RELEASE FreeBSD 9.1-RELEASE #0: Sun Oct 27 21:13:44 YAKT 2013     root@test.psfa.ru:/usr/src/sys/i386/compile/PFA  i386
root@test:/usr/home/Pavel #
Поднял я OpenVPN сервер, сгенерировал сертификаты, вот конфигурационные файлы:

1. Для сервера:

Код: Выделить весь код
mode                                 server
tls-server
daemon
ifconfig                              172.31.254.1 255.255.255.0
server                                172.31.254.0 255.255.255.0
port                                    1194
proto                                  tcp-server
dev                                      tap0
dh                                        /usr/local/etc/openvpn/dh2048.pem
ca                                         /usr/local/etc/openvpn/CA_cert.pem
cert                                     /usr/local/etc/openvpn/certs/server.pem
key                                     /usr/local/etc/openvpn/keys/server.pem
crl-verify                          /usr/local/etc/openvpn/crl/crl.pem
tls-auth                            /usr/local/etc/openvpn/ta.key 0
#push                              "redirect-gateway"
client-config-dir             /usr/local/etc/openvpn/ccd
#ifconfig-pool-persist  /usr/local/etc/openvpn/ipp.txt 0
keepalive                        10 120
client-to-client
comp-lzo
persist-key
user                                  nobody
group                               nogroup
verb                    3
log-append                       /usr/local/etc/openvpn/openvpn.log
2. Для клиента (клиент на Windows 7):

Код: Выделить весь код
client
dev		tap
proto		tcp
remote		195.19.170.XXX 1194 (как раз имя удаленного сервера, имеющего выход в Интернет с другим провайдером, адрес белый)
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
ns-cert-type	server
tls-client
tls-remote	test.xxxx.ru
ca		"C:\\OpenVPN\\CA_cert.pem"
cert		"C:\\OpenVPN\\COitWork.pem"
key		"C:\\OpenVPN\\KOitWork.pem"
tls-auth	"C:\\OpenVPN\\ta.key" 1
tun-mtu		1500
mssfix		1450
route-method exe
route delay 2
verb		3
После этого добавил в /boot/loader.conf строчку

Код: Выделить весь код
If_tap_load=”YES”
После этого у меня в настройках интерфейса начал появляться сетевой интерфейс tap0, через который, собственно, и подключаются клиенты к серверу.

Код: Выделить весь код
root@test:/boot # ifconfig
re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=8209b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC,LINKSTATE>
        ether 00:21:91:d6:f0:06
        inet 195.19.170.XXX netmask 0xffffff00 broadcast 195.19.170.255
        inet6 fe80::221:91ff:fed6:f006%re0 prefixlen 64 scopeid 0x4
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
ipfw0: flags=8801<UP,SIMPLEX,MULTICAST> metric 0 mtu 65536
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x6
        inet 127.0.0.1 netmask 0xff000000
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
tap0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=80000<LINKSTATE>
        ether 00:bd:97:28:00:00
        inet6 fe80::2bd:97ff:fe28:0%tap0 prefixlen 64 scopeid 0x7
        inet 172.31.254.1 netmask 0xffffff00 broadcast 172.31.254.255
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
        Opened by PID 2249
root@test:/boot #
Приведу часть файла сервера OpenVPN /etc/rc.conf, касающийся данного вопроса:

Код: Выделить весь код
hostname="test.xxxx.ru"
keymap="ru.koi8-r.kbd"
ifconfig_re0=" inet 195.19.170.XXX netmask 255.255.255.0"
defaultrouter="195.19.170.XXX"
gateway_enable="YES"
sshd_enable="YES"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="AUTO"

firewall_enable="YES"
firewall_nat_enable="YES"
firewall_script="/etc/rc.ipfw"

openvpn_enable="YES"
openvpn_configfile="/usr/local/etc/openvpn/openvpn.conf"
Далее приведу часть файла ядра системы сервера OpenVPN , касающийся данного вопроса:

Код: Выделить весь код
options         IPFIREWALL
options         IPFIREWALL_NAT
options         IPFIREWALL_FORWARD
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=500
options         LIBALIAS
options         ROUTETABLES=2
options         DUMMYNET
options         HZ="1000"
После этого добавил в файл скрипта брандмауэра необходимые правила, чтобы все заработало (так как файл большой, публикую только необходимые правила, касающиеся данного вопроса:

Код: Выделить весь код
#!/bin/sh

fwcmd="/sbin/ipfw -q"
eth0="lo0"
eth1="re0"
vif="tap0"
local="127.0.0.0/8"
ks="keep-state"

${fwcmd} add 01250 allow all from any to any via ${vif}
${fwcmd} add 01260 allow tcp from any to 195.19.170.XXX 1194 in via ${eth1}
${fwcmd} add 01270 allow tcp from any to me 26 in via ${vif} ${ks}

${fwcmd} nat 1 config log if ${eth1} reset same_ports deny_in
${fwcmd} add 01273 nat 1 ip from any to any via ${eth1}
После этого я стартанул OpenVPN сервер и попытался подключиться к нему с клиента. Все заработало просто идеально, произошло подключение к серверу, клиент получил доступ к серверу, получил IP 172.31.254.2, пинг до сервера, до интерфейса tap0 172.51.254.1 доходил.

Но появилась одна проблема, не очень кстати приятная. Дома я подключен через Ростелеком, но мне хотелось бы, активировав подключение по OpenVPN, подключаться к тому провайдеру, к которому подключен OpenVPN сервер. Но, несмотря на мои попытки, ничего у меня так и не получилось. Кстати, при подключении к OpenVPN с клиента пинговался и основной шлюз, прописанный на сервере OpenVPN – 195.19.170.XXX

Я пытался засунуть две строчки в конфигурационный файл OpenVPN сервера:

Код: Выделить весь код
push                              "redirect-gateway"
push                              "dhcp-option DNS 195.19.170.XXX"
при этом в адресе основного шлюза TAP адаптера на клиенте OpenVPN Windows 7 появлялся основной шлюз 172.51.254.1

Но при этом случались весьма неприятные события:

1. Пропадал доступ в Интернет
2. Пропадал пинг до основного шлюза, прописанного на DNS сервере – 195.19.170.XXX

В связи с этим, у меня есть следующие вопросы:

1. Что не так в моих конфигурационных файлах, почему я не могу подключиться к Интернету с помощью другого провайдера через OpenVPN в моем конкретном случае?
2. Нужно ли было использовать ядерный NAT для решения моей задачи?
3. В том случае, если к OpenVPN серверу подключится еще один клиент, как мне организовать подключение к этому клиенту через сервер OpenVPN с моего домашнего компьютера?

Отправлено: 23:09, 27-10-2013

 

Забанен


Сообщения: 50
Благодарности: 0

Профиль | Цитировать


Выходит, я зря вернулся на этот недофорум. Толку от него, если задаешь вопрос, и не получаешь на него ответа. Только зря время потерял.

Отправлено: 06:18, 30-10-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 42
Благодарности: 0

Профиль | Отправить PM | Цитировать


Призрак, а что конкретно в логах на freebsd?

Отправлено: 19:52, 01-11-2013 | #3


Новый участник


Сообщения: 5
Благодарности: 1

Профиль | Отправить PM | Цитировать


1. Чтобы подключаться к Инету через ОпенВПН, надо чтобы на локальном компе шлюз по умолчанию был настроен на шлюз в ОпенВПН. Попробуй на виндовом компе после подключения дать команду route print и посмотри, куда пакеты уходят по умолчанию.

2. Нет, NAT для этого совсем не нужен, только правильная маршрутизация.

3. Опция --client-to-client

Отправлено: 15:57, 10-11-2013 | #4



Компьютерный форум OSzone.net » Linux и FreeBSD » Общий по FreeBSD » FreeBSD - OpenVPN - не совсем стандартное решение, нужна помощь.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Ошибка - Не работает микрофон,нужна помощь. imFriend Microsoft Windows 2000/XP 0 19-11-2011 16:11
Система - Нужна помощь в решение конфликта интересов пользователей. baiazed Программное обеспечение Windows 5 20-08-2010 15:53
Загрузка - Не включается. Нужна помощь. wale Microsoft Windows Vista 6 29-03-2009 03:33
Flash - usb не читает. нужна помощь 00skazka00 Накопители (SSD, HDD, USB Flash) 10 07-06-2008 21:53
Не совсем стандартное решение построения LAN. LEXX2002 Сетевые технологии 4 14-03-2005 21:18




 
Переход