У меня на хосте следующая ситуация:
veth5
10.0.0.3
o
|
----------------- ------------ ----------------- eth0
| veth1 o--| ---- | br0 |----|--o o--|----o o------o------ internet
| 10.0.0.2 | ------------ | veth3 veth6 | veth7 ppp0
| | | | 192.168.1.2 192.168.100.169
| client | | helper |
----------------- -----------------
Конфигурация маршрутизации была выполнена с использованием маршрутизации на основе политик. В соответствии с этим пакет, отправленный с хоста в Интернет (например, используя ping), входит в мою сеть через veth5, затем идет в помощнике пространства имен. Отсюда он отправляется в veth7, затем в ppp0 и достигает Интернета.
Вывод команды ip rule:
0: from all lookup local
2997: from 192.168.1.2 lookup T2
2998: from 192.168.100.169 lookup T2
2999: from all iif lo lookup T3
3000: from all iif veth7 lookup T1
3001: from all iif ppp0 lookup T1
4000: from all lookup T4
32766: from all lookup main
32767: from all lookup default
helper записи:
default dev ppp0 scope link
10.0.0.0.0/24 via 192.168.1.1 dev veth7
192.168.1.0/24 dev veth7 scope link
192.168.100.180 dev ppp0 scope link
Записи таблицы T2:
default dev ppp0 scope link
10.0.0.0.0/24 via 192.168.1.1 dev veth7
192.168.1.0/24 dev veth7 scope link
192.168.100.180 dev ppp0 scope link
Таблица T2 записи:
default via 10.0.0.1 dev veth5
10.0.0.0/24 dev veth5 scope link
Записи таблицы T4:
broadcast 10.0.0.0 dev veth5 proto kernel scope link src 10.0.0.3
local 10.0.0.3 dev veth5 proto kernel scope host src 10.0.0.3
broadcast 10.0.0.255 dev veth5 proto kernel scope link src 10.0.0.3
Таблица T4 entries:
broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1
local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
broadcast 192.168.1.0 dev veth7 proto kernel scope link src 192.168.1.2
local 192.168.1.2 dev veth7 proto kernel scope host src 192.168.1.2
broadcast 192.168.1.255 dev veth7 proto kernel scope link src 192.168.1.2
broadcast 192.168.100.0 dev ppp0 proto kernel scope link src 192.168.100.169
local 192.168.100.169 dev ppp0 proto kernel scope host src 192.168.100.169
Основная таблица и таблица по умолчанию пусты.
Если я пинг 8.8.8.8 с хоста, у меня есть ответ, но если я пингу, например, www.google.com, ответ DNS поступает на ppp0, но он не перенаправляется на veth7. У меня такая же проблема, когда я отправляю пакеты TCP: пакет SYN-ACK с сервера достигает интерфейса ppp0, но он не перенаправляется на интерфейс veth7 в соответствии с правилами маршрутизации. Я предполагаю, что эта проблема каким-то образом связана со слоем 4 пакетов, но я не могу понять, как это сделать.
Однако, если я выполню команду ping wwww.google.com из основной таблицы namespece ! d15], я возвращаю ответ.
Я использую Ubuntu 14.04.1 с версией ядра 4.4.0-96.
Может кто-нибудь мне помочь? Любое предложение / помощь приветствуется.