Выдержки для себя из статьи с Хабра, статьи.
Еще полезная ссылка на LARTC (Linux Advanced Routing and Traffic Control)
Добавление маршрута через шлюз:Еще полезная ссылка на LARTC (Linux Advanced Routing and Traffic Control)
route
route add -net 192.168.0.0/16 gw 10.0.0.1
Добавление маршрута через интерфейс:
route add -net 192.168.0.0/16 dev eth1
Маршрут до отдельного хоста:
route add -host 192.168.0.1 gw 172.16.0.1
ip route add 1.2.3.4 dev brLAN
Весь внешний трафик отправлять через 192.168.0.1
ip route add default via 192.168.0.1
Добавление маршрута через шлюз:
Добавление маршрута через интерфейс:
Маршрут с метрикой:
ip
Отправлять пакеты для адреса 1.2.3.4 на интерфейс brLANip route add 1.2.3.4 dev brLAN
ip route add default via 192.168.0.1
Добавление маршрута через шлюз:
ip route add 172.16.10.0/24 via 192.168.1.1
Добавление маршрута через интерфейс:
ip route add 172.16.10.0/24 dev eth0
Маршрут с метрикой:
ip route add 172.16.10.0/24 dev eth0 metric 100
Просмотр таблицы маршрутизации:
ip route
Пример:
как увидеть с локальной сети 192.168.0.0 комп с адресом из другой сети 192.168.151.0 (подключены к одному свичу)
На компе Ubuntu с адресом 192.168.0.10 выполнить:
sudo ip route add 192.168.151.0/24 dev eth0
На компе Windows с адресом 192.168.151.10 выполнить:
Причем пинг будет проходить только между этими двумя компьютерами. Поэтому можно переписать правила еще как для только одного компа:
sudo ip route add 192.168.151.10/32 dev eth0
route add 192.168.0.10 mask 255.255.255.255 192.168.151.10
Просмотр таблицы маршрутизации:
ip route
192.168.12.0/24 dev eth0 proto kernel scope link src 192.168.12.101
default via 192.168.12.1 dev eth0
proto kernel означает, что роутинг был задан ядром автоматически при задании IP интерфейса.
scope link означает, что эта запись является действительной только для этого интерфейса (eth0).
src 192.168.12.101 задает IP-адрес отправителя для пакетов, попадающих под это правило роутинга.
default via 192.168.12.1 dev eth0 Трафик на любые другие хосты, не попадающие в подсеть 192.168.12.0/24 будет уходить на шлюз 192.168.12.1 через интерфейс eth0. Пример:
как увидеть с локальной сети 192.168.0.0 комп с адресом из другой сети 192.168.151.0 (подключены к одному свичу)
На компе Ubuntu с адресом 192.168.0.10 выполнить:
sudo ip route add 192.168.151.0/24 dev eth0
На компе Windows с адресом 192.168.151.10 выполнить:
route add 192.168.0.0 mask 255.255.255.0 192.168.151.10
Причем пинг будет проходить только между этими двумя компьютерами. Поэтому можно переписать правила еще как для только одного компа:
sudo ip route add 192.168.151.10/32 dev eth0
route add 192.168.0.10 mask 255.255.255.255 192.168.151.10
policy-routing, он же PBR (policy based routing).
Пример:
У нас есть некий шлюз, на него приходят пакеты с IP 192.168.1.20. Пакеты с этого IP нужно отправлять на шлюз 10.1.0.1.
Чтобы это реализовать делаем следующее:
Создаем таблицу с единственным правилом:
# ip route add default via 10.1.0.1 table 120
Создаем правило, отправляющее нужные пакеты в нужную таблицу:
# ip rule add from 192.168.1.20 table 120
Чтобы это реализовать делаем следующее:
Создаем таблицу с единственным правилом:
# ip route add default via 10.1.0.1 table 120
Создаем правило, отправляющее нужные пакеты в нужную таблицу:
# ip rule add from 192.168.1.20 table 120
ip rule
Как же ядро выбирает, в какую таблицу отправлять пакеты?
Все логично – для этого есть правила. В нашем случае:
# ip rule
# ip rule
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
Число в начале строки – идентификатор правила, from all – условие, означает пакеты с любых адресов, lookup указывает в какую таблицу направлять пакет. Если пакет подпадает под несколько правил, то он проходит их все по порядку возрастания идентификатора. Конечно, если пакет подпадет под какую-либо запись маршрутизации, то последующие записи маршрутизации и последующие правила он уже проходить не будет.
Число в начале строки – идентификатор правила, from all – условие, означает пакеты с любых адресов, lookup указывает в какую таблицу направлять пакет. Если пакет подпадает под несколько правил, то он проходит их все по порядку возрастания идентификатора. Конечно, если пакет подпадет под какую-либо запись маршрутизации, то последующие записи маршрутизации и последующие правила он уже проходить не будет.
Возможные условия:
from – мы уже рассматривали выше, это проверка отправителя пакета.
to – получатель пакета.
iif – имя интерфейса, на который пришел пакет.
oif – имя интерфейса, с которого уходит пакет. Это условие действует только для пакетов, исходящих из локальных сокетов, привязанных к конкретному интерфейсу.
tos – значение поля TOS IP-пакета.
fwmark – проверка значения FWMARK пакета. Это условие дает потрясающую гибкость правил. При помощи правил iptables можно отфильтровать пакеты по огромному количеству признаков и установить определенные значения FWMARK. А затем эти значения учитывать при роутинге.
Пример с применением ip rule.
from – мы уже рассматривали выше, это проверка отправителя пакета.
to – получатель пакета.
iif – имя интерфейса, на который пришел пакет.
oif – имя интерфейса, с которого уходит пакет. Это условие действует только для пакетов, исходящих из локальных сокетов, привязанных к конкретному интерфейсу.
tos – значение поля TOS IP-пакета.
fwmark – проверка значения FWMARK пакета. Это условие дает потрясающую гибкость правил. При помощи правил iptables можно отфильтровать пакеты по огромному количеству признаков и установить определенные значения FWMARK. А затем эти значения учитывать при роутинге.
Пример с применением ip rule.
Комментариев нет:
Отправить комментарий