Я хочу получить доступ к своей домашней сети на ходу, но извне к ней можно получить доступ только через IPv6. Сети, из которых я хочу получить доступ, обычно имеют только IPv4. (Как) Могу ли я получить доступ ко всей домашней сети с сервером между ними?
Предположим следующее:
Сеть A (Домашняя):
- Диапазон внутренних IP-адресов: 192.168.0.0/24 (я бы хотел пока оставить внутренний IPv4)
- Машина A: aaaa:bbbb:cccc:dddd (IPv6 доступен извне)
- Машина А (внутренняя): 192.168.0.1
Сеть B (удаленная):
- Диапазон внутренних IP-адресов: 192.168.178.0/24
- Машина B (внутренняя): 192.168.178.2
- Публичный IP: 1.2.3.4 (маршрутизатор)
Сервер:
- IPv4: 2.3.4.5
- IPv6: bbbb:cccc:dddd:eeee
Теперь я хочу получить доступ к 192.168.0.3 (сеть A) из 192.168.178.2 (сеть B). Можно ли это сделать с помощью OpenVPN / (SSH) туннелей / iptables / маршрутизации? Если да:Как?
Извините, обычно у меня есть полурабочий подход или, по крайней мере, идея, как решить мои проблемы, но я думал об этом весь день, и в моей голове остался только хаос; так что я лучше начну с нуля. (Конечно, моя идея заключается в том, что сервер должен соединить сеть IPv6 A с сетью IPv4 B. Но как?)
Бонусные баллы, если весь трафик между сетью A и сервером, а также сервером и сетью B (читай: Интернетом) зашифрован.
решение1
Вы не указали, какие операционные системы используете, поэтому я могу дать вам только общий совет:
Вам придется настроить два туннеля:
- Туннель IPv4-over-IPv6 между машиной A и сервером
- Туннель IPv4-over-IPv4 между машиной B и сервером
В домашней сети вам придется направлять трафик на 192.168.178.0/24
машину A. Если машина A является шлюзом по умолчанию, то это уже будет так. В противном случае вам придется добавить статический маршрут на шлюзе по умолчанию, чтобы отправить этот трафик на машину A. На машине A вам придется настроить статический маршрут в 192.168.178.0/24
направлении туннеля IPv4-over-IPv6 к серверу.
В удаленной сети вам придется направлять трафик на 192.168.0.0/24
машину B. Если машина B является шлюзом по умолчанию, то это уже будет так. В противном случае вам придется добавить статический маршрут на шлюзе по умолчанию, чтобы отправить этот трафик на машину B. На машине B вам придется настроить статический маршрут в 192.168.0.0/24
направлении туннеля IPv4-over-IPv4 к серверу.
Серверу понадобятся два статических маршрута:
192.168.0.0/24
к туннелю IPv4-over-IPv6 к машине A192.168.178.0/24
к туннелю IPv4-over-IPv4 к машине B
Теперь машины в домашней сети будут отправлять свои пакеты на 192.168.178.0/24
шлюз по умолчанию. Если это не машина A, то шлюз по умолчанию перешлет их на машину A. Машина A перешлет их по туннелю IPv4-over-IPv6 на сервер. Сервер перешлет их по туннелю IPv4-over-IPv4 на машину B, которая перешлет пакеты в удаленную сеть.
Теперь машины в удаленной сети будут отправлять свои пакеты на 192.168.0.0/24
шлюз по умолчанию. Если это не машина B, то шлюз по умолчанию перешлет их на машину B. Машина B перешлет их по туннелю IPv4-over-IPv4 на сервер. Сервер перешлет их по туннелю IPv4-over-IPv6 на машину A, которая перешлет пакеты в домашнюю сеть.
Я четко записал каждый прыжок пути в обоих направлениях. Связь будет работать только есликаждыйОписанный выше шаг работает.
Вы можете использовать множество протоколов и приложений для настройки туннелей. Простые туннели IPvX-in-IPvY являются самыми простыми, но не обеспечивают шифрования. То же самое касается туннелей GRE. OpenVPN немного сложнее в настройке, но обеспечивает шифрование. Взгляните наLinux IPv6 Руководство по использованиюиРаздел «Туннель» руководства Linux Advanced Routing How-Toчтобы увидеть, как настраивать туннели.