Рейтинг:0

Nginx видит Linux-клиент OpenVPN с его общедоступным IP-адресом, в то время как Android-клиент видит частный VPN-IP-адрес.

флаг tr

Я настроил следующий виртуальный сервер в моей конфигурации NGINX:

сервер {
   слушать 80;
   слушать [::]:80;   
   имя_сервера ip.myserver.com; 
   место расположения / {
     default_type текстовый/обычный;
     вернуть 200 "$remote_addr\n";
   }
}

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

Мой телефон Android работает отлично:

При подключении к сайту без VPN-подключения отображается следующее: 192.0.2.222. (Конечно, на самом деле у него другой адрес.)

При подключении к сайту с использованием VPN-подключения отображается следующее 10.8.0.3, это правильный результат, поскольку он показывает, что устройство использует VPN-подключение, а поскольку служба VPN и сервер Nginx находятся на одном компьютере, Nginx видит частный IP-адрес VPN.

Когда я делаю это на моем компьютере с Linux, он отображает общедоступный IP-адрес компьютера с Linux при подключении к серверу без VPN-подключения, а при подключении через VPN-подключение отображает общедоступный IP-адрес сервера, чего я не ожидал.

Я подозреваю, что что-то не так с настройкой OpenVPN на моем ноутбуке с Linux, поскольку телефон с Android работает нормально.

Конфигурация сервера OpenVPN:

порт 1194
прото udp6
разработчик тун
пользователь никто
группа
постоянный ключ
упорный тун
поддержка 10 120
топология подсети
сервер 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
нажмите «dhcp-опция DNS 94.140.14.14»
нажмите «dhcp-опция DNS 94.140.15.15»
нажмите «перенаправление-шлюз def1 bypass-dhcp»
сервер-ipv6 fd42:42:42:42::/112
тун-ipv6
нажмите тун-ipv6
нажмите "маршрут-ipv6 2000::/3"
нажмите "перенаправление-шлюз ipv6"
дх нет
ecdh-кривая Prime256v1
tls-crypt /etc/openvpn/tls-crypt.key
crl-проверить /etc/openvpn/crl.pem
ca /etc/openvpn/ca.crt
сертификат /etc/openvpn/server_key.crt
ключ /etc/openvpn/server_key.key
аутентификация SHA256
шифр AES-128-GCM
ncp-шифры AES-128-GCM
tls-сервер
tls-версия-минимум 1.2
tls-шифр TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256
клиент-конфигурация-каталог /etc/openvpn/ccd
статус /var/log/openvpn/status.log
глагол 4

Файл клиента OpenVPN (без ключей):

клиент
прото удп
явное уведомление о выходе
remote 192.0.2.222 1194 # Изменено для отображения.
разработчик тун
разрешить-повторить бесконечный
ни к чему
постоянный ключ
упорный тун
сервер удаленного сертификата tls
Verify-x509-name server_key name # Изменено, потому что не уверен, что личная информация
аутентификация SHA256
авторизация без кеша
шифр AES-128-GCM
tls-клиент
tls-версия-минимум 1.2
tls-шифр TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256
игнорировать-неизвестный-вариант блока-снаружи-dns
setenv opt block-outside-dns # Предотвратить утечку DNS в Windows 10
глагол 3
Nikita Kipriyanov avatar
флаг za
На самом деле нам нужен не ваш конфиг Nginx, а OpenVPN. Пожалуйста, [прикрепите](https://serverfault.com/posts/1102361/edit) их к вопросу. Также обратите внимание, что если вы маскируете общедоступный IP-адрес, не используйте случайные IP-адреса, а выберите один из [RFC5737] (https://www.rfc-editor.org/rfc/rfc5737.html).
флаг tr
Я предполагаю, что мои конфигурации OpenVPN будут в порядке, а ошибка будет связана с моим ноутбуком с Linux, но я опубликую их для ясности. Пожалуйста, смотрите измененное описание...
Nikita Kipriyanov avatar
флаг za
Я подозреваю, что разные клиенты по-разному обрабатывают *push*-ed двойные опции `redirect-gateway`. Например, второй вариант может перекрывать первый или нет. Не могли бы вы объединить их в один вариант? Кроме того, если возможно, подключите `ip route` от подключенного клиента Linux сразу после подключения VPN.
флаг tr
Как мне нужно изменить его, чтобы включить все в один оператор push? Прошу прощения за свою неосведомленность в этом отношении.
Nikita Kipriyanov avatar
флаг za
Я имею в виду, вместо двух `push "redirect-gateway..." используйте только один `push "redirect-gateway def1 bypass-dhcp ipv6"`.
флаг tr
Вот что показывает IP ROUTE: `0.0.0.0/1 через 10.8.0.1 dev tun0 по умолчанию через 198.51.100.1 dev wlo1 proto dhcp src 10.51.205.131 метрика 600 10.8.0.0/24 dev tun0 ссылка на область действия ядра proto src 10.8.0.2 10.51.192.0/20 dev wlo1 ссылка на область ядра proto src 10.51.205.131 метрика 600 128.0.0.0/1 через 10.8.0.1 dev tun0 198.51.100.0/24 dev virbr0 ссылка на область ядра proto src 198.51.100.122 linkdown 198.51.100.32 через 198.51.100.1dev wlo1 ` Я поменял IP-адрес для конфиденциальности :)

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.