Пример: настроен OpenVPN-туннель, который отдаёт клиенту глобальный адрес из своего префикса.
Если клиент на хосте, то всё в порядке — интерфейсу tun0
этого хоста присваивается адрес, выданный ВПН, пакеты в него рутятся с этим адресом, и всё работает.
А вот если клиент поднят на маршрутизаторе, за которым есть хосты со своими глобальными адресами — то хрен. Пакет с адресом хоста доходит до туннеля и там пропадает (потому что его адрес источника не совпадает с адресом интерфейса, и туннелю он чужой). И чо делать?
Ну, то есть, всегда можно в лоб запилить маскарадинг, и оно заработает. Но как-то поизящней нельзя? Там, серверу волшебную опцию скормить, интерфейсу туннеля какие-то флаги задать, типа того. Может, TAP вместо TUN поднять, или чо.