Previous Entry Share Next Entry
Linux: Определённый тип трафика в определённый канал
and_cesbo
Задача: Есть два канала в интернет, необходимо часть трафика направить в один из них.
 Дано (все адреса только для примера):
  • Внешний интерфейс (1): 10.0.0.10/24 шлюз 10.0.0.1 сетевой интерфейс vlan101
  • Внешний интерфейс (2): 10.0.1.20/24 шлюз 10.0.1.1 сетевой интерфейс vlan102
  • Локальная сеть : 192.168.0.0/24 адрес шлюза 192.168.0.1
  • Компьютер пользователя: 192.168.0.2
Сначала с помощью iproute2, необходимо создать таблицы маршрутизации (для каждого канала своя таблица):
ip route add 10.0.0.0/24 dev vlan101 src 10.0.0.10 table 10
ip route add 127.0.0.0/8 dev lo table 10
ip route add default via 10.0.0.1 table 10

ip route add 10.0.1.0/24 dev vlan102 src 10.0.1.20 table 20
ip route add 127.0.0.0/8 dev lo table 20
ip route add default via 10.0.1.1 table 10

Создать правила для маршрутизации:
ip rule add fwmark 0x1 table 10
ip rule add fwmark 0x2 table 20

Чтобы завернуть трафик по нужному маршруту, его необходимо промаркировать используя iptables:
iptables -t mangle -I PREROUTING -s 192.168.0.0/24 -j MARK --set-mark 0x1
iptables -t mangle -I PREROUTING -p tcp -s 192.168.0.0/24 --dport 80 -j MARK --set-mark 0x2

NAT:
iptables -t nat -I POSTROUTING -m mark --mark 0x1 -j SNAT --to-source 10.0.0.10
iptables -t nat -I POSTROUTING -m mark --mark 0x2 -j SNAT --to-source 10.0.1.20

Отключить проверку обратного пути rp_filter:
for i in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 0 >$i; done

Более подробная информация по пакету iproute2 тут lartc.org

?

Log in

No account? Create an account