
У меня есть следующая таблица маршрутизации
10.0.1.0/24 dev eth0 proto kernel scope link src 10.0.1.151
10.0.10.0/24 dev eth1 proto kernel scope link src 10.0.10.151
default via 10.0.1.1 dev eth0
У меня есть два соединения, одно идет через локальную сеть и через 10.0.1.1 выходит в Интернет. Другое - это маршрутизатор ADSL (10.0.10.1), напрямую подключенный к eth1.
Если я подключаюсь снаружи к внешнему IP-адресу 10.0.10.1, то получаю таймаут. Если я меняю маршрут по умолчанию на 10.0.10.1, то подключение снаружи к внешнему IP-адресу 10.0.10.1 работает. Так что это похоже на проблему маршрутизации (пакеты приходят с 10.0.10.1, но выходят из 10.0.1.1, который является маршрутом по умолчанию), но я не уверен, как ее решить.
На самом деле я хочу, чтобы маршрут по умолчанию был 10.0.1.1, я просто хочу отвечать на запросы на внешний IP-адрес 10.0.10.1 через тот же интерфейс.
решение1
вам нужно использовать расширенные таблицы маршрутизации, предлагаемые iproute2. Вы настраиваете 2 таблицы и отправляете весь трафик, исходящий с IP, в определенную таблицу, в этой таблице вы можете задать шлюз по умолчанию. Чтобы задать глобальный маршрут по умолчанию, вы просто предпочитаете один интерфейс другому с помощью метрик.
пример:
- добавление шлюзов по умолчанию в таблицы:
добавить маршрут ip по умолчанию через 10.0.1.1 таблица 101
добавить маршрут ip по умолчанию через 10.0.10.1 таблица 102
- добавьте правило, согласно которому весь трафик, поступающий с определенного IP, отправляется в таблицу:
правило ip добавить из 10.0.1.151 поиск 101
правило ip добавить из 10.0.10.151 поиск 102
- добавьте метрику, какой шлюз предпочесть:
добавить маршрут ip по умолчанию через 10.0.1.151 метрика 1000
добавить маршрут ip по умолчанию через 10.0.10.151 метрика 2000
Надеюсь, это поможет вам начать :)