PI как VPN-маршрутизатор для локальных машин


18

Я хотел бы разрешить нескольким моим компьютерам выходить в Интернет через VPN-соединение. Моя идея состоит в том, что PI может просто установить соединение и затем направить запросы от других машин через него.

Я думаю, что настройка маршрутизатора по умолчанию устройства на IP-адрес PI.

Несмотря на то, что вы как-то разбираетесь в настройке командной строки для множества вещей, не могли бы вы указать мне, какие инструкции / пакеты мне нужны?

Резюме настройки:

  • PI подключается к интернету напрямую через маршрутизатор по умолчанию
  • PI создает VPN-соединение (OpenVPN) и прослушивает трафик на своем локальном интерфейсе
  • PI восстанавливает соединение при сбоях
  • другие сетевые устройства имеют шлюз по умолчанию, установленный на IP-адрес PI, и весь их трафик проходит через VPN при условии, что он работает (и нет подключения к Интернету, если VPN не работает).

Мне не нужны службы NAT или DHCP (DNS также может проходить через VPN).


в чем смысл? если вы используете свой Pi в своей локальной сети для создания исходящего соединения, почему бы не использовать другие компьютеры для непосредственного создания аналогичного исходящего соединения, сэкономив вам стоимость Pi и головную боль при установке и настройке программного обеспечения? обычная настройка VPN - это компьютер в вашей локальной сети, который прослушивает входящие соединения и проверяет пароли, а затем позволяет удаленному компьютеру использовать вашу локальную сеть напрямую, а не наоборот.
lenik

1
@lenik Дело в том, что у меня есть множество машин, которые используют одно и то же VPN-соединение. Кроме того, гораздо проще настроить одну машину, чем постоянно изменять конфигурацию нескольких машин, обеспечивая повторный набор и т. Д. И вы правы - это не стандартная настройка, если бы это было так, я, вероятно, посмотрел бы учебник и не спрашивал бы
Петр

1
Не говоря уже о том, что использование другого устройства для маршрутизации делает работу по обеспечению того, чтобы ВСЕ трафик проходил через VPN намного проще
petr

3
Некоторые устройства также не могут подключаться к VPN. Эти устройства включают в себя множество игровых приставок и другие устройства, на которых не установлены стандартные операционные системы, которые можно легко настроить для подключения к VPN.
Кибби

@lenik Эта настройка распространена в сетевом оборудовании уровня предприятия. Это встроенные маршрутизаторы, начиная с $ 300 и выше. Оператор ищет решение примерно на 10% от цены ... как и я.
Филипп Кулинг

Ответы:


15

У меня такая же настройка, как и у вас:

Cable modem -> Router (192.168.1.1) +-> Raspberry Pi (192.168.1.11)
                                    |-> iPad (DHCP)
                                    |-> PC (DHCP)
                                    `-> AppleTV (DHCP)

Сначала я изменил мои настройки сети ( /etc/network/interfaces) на RPi на статический адрес

iface eth0 inet static
address 192.168.1.11
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1

После этого вам нужно настроить OpenVPN на RPi:

sudo apt-get install openvpn

Затем вы должны установить файл конфигурации для vpn /etc/openvpn/server.conf. Я использовал образец, предоставленный моей службой vpn (Witopia), и изменил dev tunего dev tun0и добавил redirect-gatewayв конце.

Следующий шаг, измените iptables, чтобы разрешить NAT

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Чтобы сделать его постоянным, сохраните его вот так

sudo bash
iptables-save > /etc/iptables.up.rules
nano /etc/network/if-pre-up.d/iptables

Добавьте это в новый файл:

#!/bin/bash
/sbin/iptables-restore < /etc/iptables.up.rules

Сохраните и сделайте его исполняемым с chmod +x /etc/network/if-pre-up.d/iptables. Теперь вам нужно включить IP-пересылку, отредактировав /etc/sysctl.confи раскомментировав строкуnet.ipv4.ip_forward = 1

Перезагрузка и RPi должны подключаться к вашему VPN и быть готовы к приему входящего трафика. Я добавил новую опцию к моей службе dhcp на моем маршрутизаторе (под управлением OpenWrt), чтобы указать шлюз, отправляемый клиенту. Я добавил строку list 'dhcp_option' '3,192.168.1.11'в файл/etc/config/dhcp и перезагрузил роутер. Мой iPad, ПК и AppleTV теперь подключаются через RPi для доступа к внешним URL-адресам.

Источники:


1
Я только что закончил настройку подобной конфигурации в прошлые выходные. Мне также пришлось добавить «net.ipv4.tcp_ecn = 0» в файл /etc/sysctl.conf. Не уверен, что он делает, но шлюз не будет работать должным образом без него.
Кибби

Это сработало для меня, с одной модификацией: правило NAT должно бытьiptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
Regan Walsh


0

Пытаться

https://help.ubuntu.com/community/OpenVPN

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

Однако обратите внимание, что в большинстве инструкций VPN вы узнаете, как создать сервер для открытия вашей локальной сети для VPN-клиентов в Интернете, а не наоборот, поэтому вам может потребоваться немного поэкспериментировать с настройками маршрутизации.


Спасибо, я немного лучше понимаю - в чем я не уверен, так это как заставить PI прослушивать соединения и пересылать их через VPN?
Петр

1
@petr Вам просто нужно запустить sysctl -w net.ipv4.ip_forward = 1, и ваши другие машины будут использовать RPI в качестве шлюза по умолчанию, и RPI будет успешно маршрутизироваться.

0

Не знаю, полезно ли это, но я использую VPN на Raspberry Pi от провайдера vpn, когда уезжаю из США в Китай , у них есть скрипт dd-wrt, который я установил, и он работал с первого раза. Так что, возможно, вы избавите себя от многих проблем, если будете искать поставщика с уже созданным сценарием dd-wrt. Если кому-то интересно узнать сценарий, я могу опубликовать его здесь.



0

Вот моя установка, которая очень похожа на вашу потребность; единственное, что вам нужно, установить клиент OpenVPN и выполнить некоторые настройки на Raspbian. введите описание изображения здесь

Я описал это в своем блоге; Настройка VPN-шлюза с помощью Raspberry PI


Привет и добро пожаловать! Прямо сейчас я не думаю, что вопрос «не могли бы вы указать мне, как указать, какие пакеты / услуги мне нужны? Не могли бы вы указать мне, как указать, какие пакеты / услуги мне нужны?» адресовано в ответе. Не могли бы вы уточнить немного больше, не требуя, чтобы люди переходили по ссылке (которая на самом деле снова фигура)?
Ганима

@ Ганима, спасибо за ваш комментарий. Я изменил свой ответ.
afelaho
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.