iptables направление трафика через vpn

Новичок в Сети. У меня два интерфейса на хосте:eth0 и tun0 от моего клиента OpenVPN. IP-адреса:

eth0    192.168.1.22
tun0    10.1.0.8

Вопрос 1

на исходящий трафик, изменив адрес назначения на tun0 заставит ли он использовать vpn?

нет, но использование адреса шлюза для tun0. проверено следующим образом:

    iptables -t nat -N VPN
    iptables -t nat -I OUTPUT -j VPN
    iptables -t nat -A VPN -p tcp -j DNAT --to-destination 10.1.0.170

здесь 10.1.0.170 адрес шлюза для VPN (найдено с помощью ip route).

  1. приведенный выше пример создает новый (-N) цепочка для таблицы nat (-t).
  2. переход к VPN цепи от OUT (сразу после локального приложения). С помощью команды вставить (-I), чтобы заменить другие правила в OUT.
  3. это означает, что для трафика, исходящего из любого источника назначения шлюз tun0 устройства.

Вопрос 2 (a)

для исходящего трафика адрес назначения IP-адрес интерфейса eth0 или это адрес шлюза?
Предполагая eth0 - интерфейс/шлюз по умолчанию.

Вопрос 2(b)

для трафика от локальных приложений, что исходный адрес?

Вопрос 3

можно ли это решить исключительно с помощью iptables или мне нужно изменить таблицу маршрутизации? Так как оба интерфейса находятся на одном хосте (т. е. на одном и том же debian боксе).

дополнительные Info

я пытаюсь понять принципы, чтобы применить их к моему делу. Всего существует три адресных подсети I, третья находится в диапазоне 172.17.42.1 / 16, связанном с другим виртуальным интерфейсом docker0.

по существу я хочу направить трафик из просто 172.17.42.8 через VPN.

25
задан fswings
23.05.2023 21:44 Количество просмотров материала 3066
Распечатать страницу

2 ответа

из того, что я могу сказать, вы говорите о раздельном туннелировании (или, скорее, пытаетесь отключить его).

взгляните на редирект-шлюз директивы для OpenVPN: https://openvpn.net/index.php/open-source/documentation/howto.html#redirect

0
отвечен BowlesCR 2023-05-25 05:32

в первую очередь отличная фигура, связанная со страницей iptables ArchLinux wiki, полезна для идентификации потока пакетов через различные iptables цепочки (внизу ответа).

резервное копирование

iptables-save > back.up.file

проверьте свой вкус дистрибутива Linux, мне нужно добавить sudo как я не был root.

Вопрос 2 (a), 2(b)

чтобы определить источник и адрес назначения, я нашел LOG и TRACE функции очень полезно:

iptables -t filter -I OUTPUT -m limit --limit 5/m --limit-burst 10 -j LOG  --log-prefix "ABC-LOG-PREFIX "

таблица по умолчанию filter но я сказал это явно, чтобы вы могли видеть синтаксис, особенно если вы хотите исследовать другие таблицы mangle,nat etc. Я вставил правило -I потому что я хотел, чтобы пакеты регистрировались до применения других правил. Добавлен лимит скорости, чтобы файл журнала не насыщался -m limit --limit 5/m --limit-burst 10. Наконец, добавлен префикс, чтобы файл журнала можно было легко найти --log-prefix. Например, в Linux Mint:

cat /var/log/kern.log | grep "ABC-LOG-PREFIX"

во-вторых, для отладки TRACE команда будет отслеживать пакет через весь процесс:

IPTABLES -t raw -A PREROUTING -p tcp -j TRACE

внимание, это будет трассировка все tcp пакеты, для получения дополнительной информации см. Admin Berlin

Вопрос 3

как интерфейсов (eth0 и tun0) были на том же хосте, из диаграммы фильтра пакетов ниже вы можете видеть для исходящего трафика они начинаются в той же точке. Какой маршрут пакет принимает определяется шлюзом по умолчанию и связанным с ним интерфейсом, который может быть определен с помощью iproute2 работает:

ip route

это покажет шлюз по умолчанию, какие интерфейсы используются диапазоны адресов.

Диаграмма Потока Пакетов

iptables packet flow diagram

0
отвечен fswings 2023-05-25 07:49

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх