Как я могу использовать iptables/route для маршрутизации трафика от одного локального сетевого устройства через его собственный шлюз?

На моем сервере Linux (Ubuntu), как я могу настроить трафик, исходящий от одного из моих сетевых интерфейсов (мое VPN -устройство - ppp0), для маршрутизации через его собственный адрес шлюза?

Предостережения:

  • Я не могу установить его в качестве маршрута по умолчанию на сервере, потому что дорогой маршрутизировать весь трафик через него
  • Нет определенной подсети, связанной с VPN - это может быть трафик на любой публичный IP или порт (VPN ведет себя как прокси)

Конечная цель состоит в том, чтобы иметь возможность настроить одно локальное приложение для привязки к IP-адресу VPN и обмениваться данными только через VPN, но никакой другой трафик сервера не должен маршрутизироваться через него. Я настроил это так, но мне нужны дополнительные правила маршрутизации, чтобы это работало.

2 ответа

Решение

Если VPN фактически действует как прокси, то адреса источника должны быть перезаписаны в дальний конец сеанса ppp (если это не ненумерованный интерфейс, но я не видел этого на vpn). Если на самом деле он работает нормально и пункт назначения может быть где угодно, то это становится более интересной проблемой.

Базовое решение обрисовано в общих чертах в LARTC- вам нужно создать вторую таблицу маршрутизации, указав VPN-туннель в качестве маршрута по умолчанию, а затем добавить фильтры, чтобы направить некоторый трафик для просмотра вторичной таблицы маршрутизации вместо таблицы по умолчанию. Если вам нужно только одно приложение для прохождения туннеля, и приложение может связываться с IP-адресом туннельного интерфейса, то маршрутизация на основе политик от исходного IP-адреса должна помочь - см. Пример здесь: http://lartc.org/howto/lartc.rpdb.html

Вы можете использовать dev параметр для привязки маршрута к указанному устройству.

route add -net 0.0.0.0 gw ENTER-GATEWAY-HERE dev ppp0

Другие вопросы по тегам