Я просто настроил OpenVPN, и он работает, как и ожидалось. Однако таблица маршрутизации клиента смущает меня до бесконечности. Вот таблица маршрутов:
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.8.0.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
10.8.0.1 10.8.0.5 255.255.255.255 UGH 0 0 0 tun0
54.202.18.143 10.0.2.2 255.255.255.255 UGH 0 0 0 eth0
10.0.2.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0
0.0.0.0 10.8.0.5 128.0.0.0 UG 0 0 0 tun0
128.0.0.0 10.8.0.5 128.0.0.0 UG 0 0 0 tun0
0.0.0.0 10.0.2.2 0.0.0.0 UG 0 0 0 eth0
Итак, давайте рассмотрим его построчно
- Любой пакет, предназначенный для,
10.8.0.5
не имеет шлюза и будет использоватьtun0
- любой пакет, предназначенный для,
10.8.0.1
будет использоваться в10.8.0.5
качестве шлюза черезtun0
- любой пакет, предназначенный для,
54.202.18.143
будет использоваться в10.0.2.2
качестве шлюза черезeth0
- любой пакет, предназначенный для,
10.0.2.0/24
не имеет шлюза и будет использоватьeth0
- Давайте проигнорируем 169.254.0.0 часть
- Все остальные пакеты (предназначенные для
0.0.0.0
) будут использоваться10.8.0.5
как шлюз по умолчанию черезtun0
. Так что это шлюз по умолчанию, не так ли? - Любой пакет, предназначенный для,
128.0.0.0/7
будет использовать в10.8.0.5
качестве шлюза по умолчанию черезtun0
- Все остальные пакеты (
0.0.0.0
) будут использовать в10.0.2.2
качестве шлюза по умолчанию черезeth0
Вопросов:
- Есть ли у меня 2 шлюза по умолчанию, если мы рассмотрим пункты 6 и 8? (хотя может быть только 1 шлюз по умолчанию, поэтому я знаю, что ошибаюсь, но не могу обосновать) ( вероятно, ответ, см. ниже )
- Учитывая
10.8.0.1
пункты 1 и 2, все, что происходит, на самом деле не использует какой-либо шлюз через tun0. Это верно? - Учитывая пункты 3 и 4, все, что происходит, на
54.202.18.143
самом деле не использует какой-либо шлюз черезeth0
. Это верно?
ОБНОВИТЬ...
Прочитав это , я нашел больше информации. Ниже строки имеют большой смысл для меня сейчас:
0.0.0.0 10.8.0.5 128.0.0.0 UG 0 0 0 tun0
128.0.0.0 10.8.0.5 128.0.0.0 UG 0 0 0 tun0
Итак, 1-я строка является определяющей, 0.0.0.0/128.0.0.0
а вторая - определяющей 128.0.0.0/128.0.0.0
. По существу:
0.0.0.0/128.0.0.0 = 0.0.0.0/1 = 0.0.0.0 TO 127.255.255.255
128.0.0.0/128.0.0.0 = 128.0.0.0/1 = 128.0.0.0 TO 255.255.255.255
Таким образом, выше 2 маршрута охватывают весь диапазон адресов IPv4 [0.0.0.0 TO 255.255.255.255]
. Это разумный способ для OpenVPN добавить маршрут по умолчанию без замены исходного маршрута по умолчанию, и этот маршрут по умолчанию будет маршрутизироваться через tun0
.
Поэтому я думаю, что у меня есть ответ на мой первый вопрос:
Есть ли у меня 2 шлюза по умолчанию, если мы рассмотрим пункты 6 и 8?
НЕТ, есть только один шлюз по умолчанию, и это:
0.0.0.0 10.0.2.2 0.0.0.0 UG 0 0 0 eth0
источник
0.0.0.0
маршрут имеет Genmask,128.0.0.0
который, вероятно, не делает его маршрутом по умолчанию. Я должен сказать, что у меня нет ни малейшего представления о том, что означает эта маска и для чего нужен маршрут: /Ответы:
6-я строка определяет диапазон 0.0.0.0 - 127.255.255.255, а 7-я строка определяет диапазон 128.0.0.0 - 255.255.255.255.
НЕТ, есть только один шлюз по умолчанию, и это:
Не правильно, пакеты, предназначенные для 10.8.0.1, будут перенаправлены на 10.8.0.5 (который доступен через tun0 lan, как установлено в первой строке).
Вы были правы, если маска не была 255.255.255.255
Не правильно, пакеты, предназначенные для 54.202.18.143, будут перенаправлены на 10.0.2.2 (который является другим хостом на eth0 lan и доступен по 4-й линии)
источник