Комментарии 10
Вы конечно молодец, что запостили очередной конспект LARTC, но надеюсь ваш личный опыт выходит за рамки чистой теории и конспектирований. Скажите достаточно ли такой конфигурафии для заруливания всех пакетов приходящих на интерфейс eth1 на гейт 1.2.3.4 если нет, то почему, если да то почему:
echo «123 testtable» >> /etc/iproute2/rt_tables
ip rule add iif eth1 table testtable
ip route add default via 1.2.3.4 table testtable proto static
а также, как на практике убедиться(интересует минимальный набор команд), что ядро было собрано с необходимыми опциями в случае, если на целевой железке стоит очень специфичный Linux без исходников
echo «123 testtable» >> /etc/iproute2/rt_tables
ip rule add iif eth1 table testtable
ip route add default via 1.2.3.4 table testtable proto static
а также, как на практике убедиться(интересует минимальный набор команд), что ядро было собрано с необходимыми опциями в случае, если на целевой железке стоит очень специфичный Linux без исходников
1. Этого будет достаточно для заруливания всех IP-пакетов, приходящих на eth1, причем в Ethernet-фрейме, содержащем этот IP-пакет в качестве MAC-адреса получателя должен стоять MAC-адрес нашего eth1. Почему только эти пакеты? Потому что только эти пакеты роутятся по определению. Почему будут роутиться? Потому что прописаны такие правила, и они как ни странно работают. Можно поставить эксперимент:
На C3 делаем
На C2 делаем
Генерируем трафик с C3 на любые адреса, кроме 192.168.12.0/24. Запускаем tcpdump на C1 и наблюдаем эти пакеты.
На C3 делаем
ip route add default via 192.168.12.1
.На C2 делаем
ip route add default via 192.168.11.1 table 123 proto static
и ip rule add iif eth0 table 123
(синтаксис не принципиален, работает также как и ip rule add iif eth0 lookup 123
).Генерируем трафик с C3 на любые адреса, кроме 192.168.12.0/24. Запускаем tcpdump на C1 и наблюдаем эти пакеты.
2. Очень просто:
Если есть /proc/config.gz, то
# ip rule
RTNETLINK answers: Operation not supported
Dump terminated
Если есть /proc/config.gz, то
zcat /proc/config.gz | grep CONFIG_IP_ADVANCED_ROUTER
и zcat /proc/config.gz | grep CONFIG_IP_MULTIPLE_TABLES
.Спасибо за статью, многое из уже используемого стало понятным :)
Вопрос по условию from для table: там должны быть только IP локального хоста или могут быть любые, которые проходят через ядро (комп работает как шлюз NAT, например)?
Вопрос по условию from для table: там должны быть только IP локального хоста или могут быть любые, которые проходят через ядро (комп работает как шлюз NAT, например)?
Любые, которые проходят через ядро.
Из статьи:
Из статьи:
Теперь рассмотрим простой пример. У нас есть некий шлюз, на него приходят пакеты с IP 192.168.1.20. Пакеты с этого IP нужно отправлять на шлюз 10.1.0.1...
Спасибо за пост, теперь все встало по полочкам, как в аптеке.
А как идеологически верно сохранять данные правила, чтобы после перезагрузки они работали?
Пока прописываю в post-up скрипты для интерфейсов.
Пока прописываю в post-up скрипты для интерфейсов.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Роутинг и policy-routing в Linux при помощи iproute2