У меня есть сервер Ubuntu, который я использую для получения определенных файлов из Интернета через VPN. Я настроил VPN с помощью PPP0 и в настоящее время настраиваю маршрут следующим образом:

 sudo route add default ppp0

Все работает нормально с подключением vpn, но теперь я хотел бы маршрутизировать трафик FTP через eth0, а не VPN.

Я старался

  sudo route add default eth0

в течение периода, когда я использовал FTP, но потерял подключение к интернету до

   ifdown eth0 ifup eth0

назывался.

Очевидно, я делаю что-то не так.

Идеальным решением было бы всегда маршрутизировать весь FTP через eth0, если это легко, если нет, то что я должен добавить в свой bash-скрипт, чтобы маршрутизировать трафик обратно к eth0, когда загрузка по FTP завершается (после чего я могу вернуться к добавлению маршрута по умолчанию ppp0).

1 ответ1

2

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

10 000-футовый вид - это то, что вы:

  1. Создайте дополнительные таблицы маршрутизации в ядре.
  2. Сконфигурируйте каждую таблицу маршрутизации, чтобы использовать другой маршрут по умолчанию (один для вашего обычного соединения, один для вашей VPN).
  3. Используя iptables, идентифицируйте и mark каждый пакет в соответствии с вашими правилами / политикой.
  4. Назначьте метки, которые вы использовали в шаге 3, чтобы сообщить ядру, какую таблицу маршрутизации использовать для каждого пакета.

Самые основные команды для достижения этой цели:

echo 200 novpn >> /etc/iproute2/rt_tables
ip route add table 200 default via 192.0.2.1
iptables -t mangle -I OUTPUT -p tcp --dport 21 -d server.example.com -j MARK --set-mark 200
ip rule add fwmark 200 table novpn

Замените 192.0.2.1 на используемый по умолчанию маршрутизатор в локальной сети.

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