У меня работает openvpn-соединение с сервером debian в цифровом океане.
Вот моя таблица маршрутизации, ip route
:
0.0.0.0/1 via 10.8.0.5 dev tun0
default via 192.168.1.1 dev eth0 onlink
10.8.0.1 via 10.8.0.5 dev tun0
10.8.0.5 dev tun0 proto kernel scope link src 10.8.0.6
128.0.0.0/1 via 10.8.0.5 dev tun0
159.203.40.61 via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.132
Все хорошо.
Если я трассирую свою машину debian (159.203.40.61), первый переход сразу становится шлюзом по умолчанию из-за правила 159.203.40.61 via 192.168.1.1 dev eth0
. Без вопросов.
Если я трассирую внешний IP-адрес, например 8.8.8.8, первым переходом будет 10.8.0.1. Это из-за правила 0.0.0.0/1 via 10.8.0.5 dev tun0
и одноадресное правило 10.8.0.1 via 10.8.0.5 dev tun0
. Итак, трафик шифруется локально с помощью интерфейса tun0 (первый переход 10.8.0.1). Я думаю, что это будет 10.8.0.1 (а не .5) из-за правила одноадресной рассылки (поправьте меня, если я ошибаюсь).
Однако второй переход (при трассировке внешнего IP-адреса) - 159.203.24.253. Это IP-адрес цифрового океана, но это не IP-адрес моей машины debian в цифровом океане. Это почему ?
2 159.203.24.253 (159.203.24.253) 117.230 ms 116.918 ms 159.203.24.254 (159.203.24.254) 117.266 ms
(есть также 0,254, я думаю, для балансировки нагрузки)
Я подумал, что, поскольку ему нужно выйти наружу, он переключается с интерфейса tun0 на интерфейс eth0, где шлюз по умолчанию (192.168.1.1). Тогда, поскольку существует правило одноадресной рассылки 159.203.40.61 via 192.168.1.1 dev eth0
, Я ожидаю, что второй переход будет 159.203.40.61, но это не так (вместо этого 159.203.24.253).
Обновление: на машине debian с цифровым океаном действует правило маршрутизации:
159.203.24.0/20 dev eth0 proto kernel scope link src 159.203.40.61
Итак, 159.203.24.253 и .254 находятся в той же сети, что и моя цифровая океаническая машина.
И шлюз по умолчанию там 159.203.24.1
Возможно, на маршрутизаторе 159.203.24.1 существует правило, которое отправляет пакет на 159.203.24.253 и т.д.254
Обновление 2 и, возможно, ответ:
Запрашиваю 8.8.8.8 на моем локальном компьютере. Шифрование данных на tun0. Первый переход - 10.8.0.1 (не .5 из-за правила одноадресной рассылки). Чтобы перейти к нему, необходимо переключиться на eth0: используя шлюз по умолчанию 192.168.1.1, чтобы перейти на 159.203.40.61 (правило одноадресной рассылки).
Цифровая океаническая машина принимает пакет. Сначала идет 10.8.0.1, расшифровка данных на tun0. Затем, поскольку конечный пункт назначения - 8.8.8.8, он переключается на eth0: шлюз по умолчанию - 159.203.24.1, который является маршрутизатором, который отправляет пакет на второй переход, то есть 159.203.24.253/254.
Кажется, что шлюзы, задействованные между двумя переходами, не отображаются в traceroute.