Я знаю, что на этот заголовок кажется "слишком много ответов", но на самом деле мне не повезло с поиском ...
РЕДАКТИРОВАТЬ: я обновил диаграмму и вопрос, если быть более точным
Чтобы лучше объяснить мою ситуацию, вот небольшая диаграмма:
Я пытаюсь сделать так, чтобы «Домашний ПК» действовал как «Работа ПК»: - просмотр всех сайтов, которые должны быть недоступны из сети, отличной от 10.42.0.x - Другой локальный клиент SSH в сети 10.42.xx - Использовать DNS, предоставленный работой сеть (для настраиваемого TLD)
Другими словами, я хочу, чтобы PC Home "превратился" в PC Work.
Я знаю, что это возможно с 2 клиентами, подключенными к одному посреднику OpenVPN (клиент OpenVPN на домашнем ПК -> Сервер OpenVPN -> Клиент OpenVPN на работе ПК -> Использование сети с ПК).
Но я очень плохо разбираюсь в сетевых инфраструктурах ...
Может ли кто-нибудь объяснить мне, как это сделать? (TAP вместо TUN? Может быть, соединение клиент-клиент? Правила Iptables для пересылки?)
Ой, я забыл ; Я работаю над Linux, PC Home на Ubuntu 18.04 (но должен работать с любой ОС), OpenVPN Server тоже на Ubuntu 18.04, а PC Work на Raspbian :)
Спасибо ! Некоторые актуальные файлы конфигурации:
Файл конфигурации сервера:
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp.txt
client-config-dir ccd
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
keepalive 10 120
tls-auth ta.key 0
cipher AES-256-CBC
auth SHA256
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
verb 3
explicit-exit-notify 1
В файле IPP я указываю IP-адрес VPN для домашнего и рабочего клиента (10.8.0.10 и 10.8.0.20). На сервере включена переадресация IP. На сервере /etc/ufw/before.rules я добавил следующие строки:
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to eth0
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
Подскажите, если я пропущу еще какие-то полезные вещи :)
Спасибо !
Обычно для сетевых подключений OPENVPN создает свою собственную сеть, которая соединяет узлы (10.8.0.0/MASK).
У вас будет две машины OPENVPN, по одной на каждом конце, один сервер и один клиент.
Эти машины также будут подключены к сетям на каждом конце, 192.168.0.0/MASK и 10.42.0.0/MASK, похоже, в вашем случае.
С двух машин OPENVPN вы можете получить доступ к другому концу, то есть с 10.8.0.10 вы можете пропинговать 10.8.0.20
Если это так, я думаю, вам нужно сделать 3 вещи, чтобы направить трафик в удаленные сети.
1- Активируйте IPFORWARD на обоих серверах
echo 1>/proc/sys/net/ipv4/ip_forward
2- Добавьте маршруты на своих маршрутизаторах, примерно так
МаршрутизаторA:
ip route add 10.42.0.0/MASK via 192.168.0. [OPENVPN ip]
RouterB:
ip route add 192.168.0.0/MASK via 10.42.0.0. [OPENVPN ip]
3- У вас уже должны быть они, но на каждом конце у вас также должен быть на серверах OPENVPN маршрут для перехода на другую сторону, что-то вроде
OpenVPN1:
ip route add 10.42.0.0/MASK via 10.8.0.10
OpenVPN2:
ip route add 192.168.0.0/MASK via 10.8.0.20
Таким образом вы сообщаете своим серверам OPENVPN, как маршрутизировать сети и как к ним добраться.
Надеюсь, я помог.