Существует два независимых потока пакетов - один для исходных пакетов из локальной сети, а другой для инкапсулированных пакетов в глобальную сеть.
Например, клиент локальной сети пытается связаться с удаленным хостом через VPN:
- Исходный пакет проходит через FORWARD и пересылается из
eth1
в tun0
, где он используется OpenVPN.
- OpenVPN отправляет новый пакет "VPN", который проходит через OUTPUT и отправляется с межсетевого экрана на
eth0
.
То же самое для ответов от VPN к локальной сети:
- Пакеты VPN принимаются по
eth0
, проходят через INPUT и принимаются OpenVPN на межсетевом экране.
- Декапсулированные "оригинальные" пакеты выглядят так, как если бы они были получены через
tun0
, и снова проходят через FORWARD к eth1
.
Что касается iptables, то tun0
- это обычный сетевой интерфейс, который подключен к еще одной сети - он ничем не отличается от, например, физического подключения eth2 с помощью очень длинного кабеля.