Я подключил свой дом к своему рабочему месту по причинам резервного копирования вне дома через OpenVPN. Связь работает хорошо. На работе у меня 5 фиксированных IP-адресов. Теперь я хотел бы назначить один из этих IP-адресов для пересылки на мой домашний компьютер. Я подтвердил прибытие пакета на мою домашнюю машину с помощью tcpdump.

Проблема в том, что мой маршрут по умолчанию дома - это не tun0 (естественно), а eth0 для моего собственного провайдера. Поэтому я создал отдельную таблицу маршрутизации для маршрутизации своих пакетов tun0 туда, где они принадлежат, но не определяю, как пометить входящий пакет, поступающий через tun0, с помощью iptables, поэтому я могу отогнать их обратно.

Я не хочу никаких ограничений порта, но только то, что приходит от tun0, должно уходить через tun0.

1 ответ1

0

Дело не в маркировке пакетов с помощью iptables, а в использовании двух разных таблиц маршрутизации. Это необходимо сделать, поскольку у вас будет два шлюза по умолчанию, и это возможно только в том случае, если у вас есть две совершенно разные таблицы маршрутизации с соответствующими правилами, определяющими, когда применять каждую из них.

Обычная процедура настройки системы таблиц с двумя маршрутизациями выглядит следующим образом:

Сначала создайте две таблицы (замените NAME1 и NAME2 именами, которые что-то значат для вас, то же самое с IP1, DEV1 и т.д.):

  echo 200 <NAME1> >> /etc/iproute2/rt_tables
  echo 201 <NAME2> >> /etc/iproute2/rt_tables

Добавьте шлюз к каждой таблице маршрутизации (при необходимости):

  ip route add <NET1> dev <DEV1> src <SRC1> table <NAME1>
  ip route add <NET2> dev <DEV2> src <SRC2> table <NAME2>

Тогда маршрут по умолчанию:

 ip route add default via <IP1> table <NAME1>
 ip route add default via <IP2> table <NAME2>

Затем правила выбора таблицы маршрутов на основе адреса источника:

 ip rule add from <IP1> table <NAME1>
 ip rule add from <IP2> table <NAME2>

В вашем случае это еще проще, потому что запуск VPN автоматически настроит вашу основную таблицу маршрутизации, и вам нужно сделать это только для другой таблицы маршрутизации. В приведенном выше правиле IP1 должен быть IP-адресом интерфейса tun/tap, а IP2 - IP-адресом другого интерфейса (это может быть eth0 или wlan0, или что-то еще).

Что касается других приложений, которые запускают соединение с вашего компьютера, вам просто нужно привязать их к любой сетевой плате.

РЕДАКТИРОВАТЬ:

Теперь, когда я вижу картину установки, которую вы пытаетесь реализовать, я вижу, что предложенное мной решение не является правильным, поскольку вы не хотите, чтобы весь ваш трафик маршрутизировался через VPN, а только тот, который предназначен для другой локальной сети. Это намного проще.

Забудьте все о двух таблицах маршрутизации и политике маршрутизации. Сотрите вторую таблицу маршрутизации. Запустите VPN, убедитесь, что ни клиент, ни сервер не содержат оператора, содержащего слова redirect-gateway df1. Затем на своем домашнем сервере введите следующие команды как sudo:

  ip route add 192.168.57.0/24 via 192.168.162.5 
  iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE 

в то время как на вашем рабочем маршрутизаторе, выполните снова, как sudo, эти две команды:

  ip route add 192.168.112.0/24 via 192.168.162.9
  iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

Столицы, где они есть, обязательны.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .