Я получаю 3 IP-адреса от моего провайдера, поэтому после моего модема у меня есть коммутатор с тремя вещами. Два сервера, один маршрутизатор. Все мои персональные компьютеры находятся за роутером. У моего старого сервера было два порта Ethernet, поэтому я помещал один на коммутатор, а другой - на маршрутизатор, чтобы не пропускать трафик сервера за маршрутизатор и при этом иметь возможность использовать общие ресурсы samba для медиа.
Мой новый сервер с низким энергопотреблением имеет только одну локальную сеть. В конце концов я получу для этого USB-разъем Ethernet, но до тех пор я бы хотел, чтобы у меня все еще были общие папки с samba. Я подумал, что должен быть какой-то способ достичь этого через VPN.
Итак, что я хотел бы сделать, это настроить VPN-сервер на сервере, позволить клиентам за маршрутизатором подключаться к нему. Это казалось достаточно простым, за исключением того, что все руководства, которые я видел, предполагают, что вы можете распределять адреса в локальной сети сервера. Поскольку локальная сеть моего сервера является общедоступным Интернетом, я не могу этого сделать. Можно ли как-нибудь создать «воображаемую» локальную сеть, существующую только в сознании сервера, и подключить к ней мои VPN-клиенты?
Чтобы выяснить, является ли сервер 68.232.SSS.SSS, и если маршрутизатор - 68.232.RRR.RRR, и если компьютеры за маршрутизатором - 10.0.0.1-255, могу ли я заставить клиентов VPN использовать адреса, такие как 192.168.0.VPN?
OOoOoOOOooOOo
OoO Public OoOOo-----Server eth0 (Real) 68.232.SSS.SSS
OoO Internet OoO eth1 (Virtual) 192.168.0.1
OoOoOOoOOoOOOo
|
\--Router eth0 (WAN) 68.232.RRR.RRR
| eth1 (LAN) 10.0.0.1
|
\-----Client eth1 (Virtual) 192.168.0.2
eth0 (Real) 10.0.0.2
генерируйте сертификаты как в официальном ПРАКТИЧЕСКОМ РУКОВОДСТВЕ:
root@server:/etc/openvpn/easy-rsa# cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa
root@server:/etc/openvpn/easy-rsa# cd /etc/openvpn/easy-rsa
Отредактируйте/etc/openvpn/easy-rsa/vars и заполните значения appropiate
root@server:/etc/openvpn/easy-rsa# . ./vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys
root@server:/etc/openvpn/easy-rsa# ./clean-all
root@server:/etc/openvpn/easy-rsa# ./build-ca
Generating a 1024 bit RSA private key
......................++++++
........++++++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [HK]:
State or Province Name (full name) [New Territories]:
Locality Name (eg, city) [Tuen Mun]:
Organization Name (eg, company) [Home]:
Organizational Unit Name (eg, section) [changeme]:
Common Name (eg, your name or your server's hostname) [OpenVPN-CA]:
Name [OpenVPN-CA]:
Email Address [test@example.com]:
root@server:/etc/openvpn/easy-rsa# ./build-key-server server
Generating a 1024 bit RSA private key
...............++++++
..........++++++
writing new private key to 'server.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [HK]:
State or Province Name (full name) [New Territories]:
Locality Name (eg, city) [Tuen Mun]:
Organization Name (eg, company) [Home]:
Organizational Unit Name (eg, section) [changeme]:
Common Name (eg, your name or your server's hostname) [server]:
Name [OpenVPN-CA]:
Email Address [test@example.com]:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /etc/openvpn/easy-rsa/openssl-1.0.0.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'HK'
stateOrProvinceName :PRINTABLE:'New Territories'
localityName :PRINTABLE:'Tuen Mun'
organizationName :PRINTABLE:'Home'
organizationalUnitName:PRINTABLE:'changeme'
commonName :PRINTABLE:'server'
name :PRINTABLE:'OpenVPN-CA'
emailAddress :IA5STRING:'test@example.com'
Certificate is to be certified until Mar 18 13:18:09 2022 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
root@server:/etc/openvpn/easy-rsa# ./build-key client
Generating a 1024 bit RSA private key
..........++++++
...................................................++++++
writing new private key to 'client.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [HK]:
State or Province Name (full name) [New Territories]:
Locality Name (eg, city) [Tuen Mun]:
Organization Name (eg, company) [Home]:
Organizational Unit Name (eg, section) [changeme]:
Common Name (eg, your name or your server's hostname) [client]:
Name [OpenVPN-CA]:
Email Address [test@example.com]:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /etc/openvpn/easy-rsa/openssl-1.0.0.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'HK'
stateOrProvinceName :PRINTABLE:'New Territories'
localityName :PRINTABLE:'Tuen Mun'
organizationName :PRINTABLE:'Home'
organizationalUnitName:PRINTABLE:'changeme'
commonName :PRINTABLE:'client'
name :PRINTABLE:'OpenVPN-CA'
emailAddress :IA5STRING:'test@example.com'
Certificate is to be certified until Mar 18 13:20:00 2022 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
root@server:/etc/openvpn/easy-rsa# ./build-dh
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
............................................................................+..................+...........+...........................+..............+..............................................................+......................................................................................................+......................................................................................+..............................................................................+..................+.................+..................................................................+.........................................+...........+..........................................................................................+..............................................+....................................+...................+....+..+................+.+.........+..............................................................+....................................................................................................................+...........+.....................................................................................................................................+.........................................................+...........................................................+.......................................................................................................................................................................................................................................+..............+..............................................................................................................................................+............................+..........................................+....................................................................................................................................++*++*++*
скопируйте необходимые файлы с/etc/openvpn/easy-rsa/keys на сервере к/etc/openvpn
для сервера: ca.crt dh1024.pem server.crt server.key
для клиента: ca.crt client.crt client.key
скопируйте соответствующие демонстрационные конфигурационные файлы от/usr/share/doc/openvpn/examples/sample-config-files/до/etc/openvpn и распакуйте их
сервер: server.conf.gz
клиент: client.conf
отредактируйте "удаленную" запись на клиенте/etc/openvpn/client.conf
Введите имя сервера / IP-адрес. Никакие другие изменения не должны быть сделаны
Сервис готов запуститься теперь, сервер в 10.8.0.1
Я предполагаю, что только необходимо получить доступ к серверу, дополнительная работа должна быть сделана, если Вы хотите получить доступ к другим внутренним сетям.
настройте самбу для слушания на 10.8.0.0/24
Все должно было быть сделано, комментарий отпуска здесь, если что-то идет не так, как надо.
Хотя это и не прямой ответ на ваш вопрос, я советую вам смонтировать ваш сервер, используя вместо этого sshfs. Все, что вам нужно, это работающий ssh-сервер, а не сложная комбинация samba и vpn-решения с болтовым соединением.
На клиенте посмотрите Как выполнить автоматическое монтирование с помощью sshfs? для решения с графическим интерфейсом или http://ubuntuforums.org/showthread.php?t=430312 для общесистемного решения fstab.
Установка openvpn
на сервере и клиентах. На сервере это поднимет tun0 туннельный интерфейс с подсетью IP Вашего выбора. Соответствующие опции в конфигурационном файле /etc/openvpn/server.conf
:
dev tun
server 192.168.1.0 255.255.255.0
Если Вы не хотите, чтобы клиенты направили весь свой трафик через VPN, прокомментируйте любое сходство со строк push "route A.B.C.D W.X.Y.Z"
из конфигурации.
В дополнение к конфигурации сети необходимо генерировать сертификаты для сервера, и для клиентов (обе стороны проходят проверку подлинности). Как сделать, который охвачен в документации OpenVPN.
Наконец, необходимо настроить клиенты, чтобы смочь использовать это соединение, таким образом, Вы вставляете их /etc/openvpn/client.conf
:
remote 68.232.SSS.SSS 1194
1194/udp является портом стандарта OpenVPN, который должен быть открыт для мира в Вашем брандмауэре (следовательно потребность в сертификатах).
Я надеюсь, что этот ответ и документация и демонстрационная конфигурация от openvpn запустят Вас.