Есть сервер, задача которого раздавать инет. Есть 4 сетевые карты:
- ETH1: содержит
- адрес N11_IP, подсеть N11_NET
- адрес N12_IP, подсеть N12_NET
- адрес N13_IP, подсеть N13_NET
- ETH2: адрес N21_IP, подсеть N21_NET
- ETH3:
- адрес N31_IP, подсеть N3_NET, шлюз провайдера N3_GATE - белый
- адрес N32_IP, подсеть N3_NET
- адрес N33_IP, подсеть N3_NET
- адрес N34_IP, подсеть N3_NET
- ETH4: адрес N41_IP, подсеть N41_NET, шлюз провайдера N41_GATE - серый
Задача - организовать выход в инет по следующим путям:
- N11_NET > N3_GATE
- N12_NET > N3_GATE
- N13_NET > N41_GATE
- N21_NET > N41_GATE
Вот что я пытался сделать:
1. создал 2 таблицы для роутинг T1 и T2.
2. заполнил таблицы роутинга:
ip route add N11_NET dev ETH1 src N11_IP table T1
ip route add N12_NET dev ETH1 src N12_IP table T1
ip route add N3_NET dev ETH3 src N31_IP table T1
ip route add default via N3_GATE table T1
ip route add N21_NET dev ETH2 src N12_IP table T2
ip route add N13_NET dev ETH1 src N13_IP table T2
ip route add N41_NET dev ETH4 src N41_IP table T2
ip route add default via N41_GATE table T2
3. добавил правила:
ip rule add fwmark 100 pref 1000 lookup T1
ip rule add fwmark 200 pref 1001 lookup T2
4. добавил правила iptables:
iptables -t mangle -A PREROUTING -s N11_NET -j MARK --set-mark 100
iptables -t nat -A POSTROUTING -m mark --mark 100 -j LOG --log-prefix="--- MARK 1 ---"
iptables -t nat -A POSTROUTING -m mark --mark 100 -j SNAT --to-source N31_IP
iptables -t mangle -A PREROUTING -s N13_NET -j MARK --set-mark 200
iptables -t nat -A POSTROUTING -m mark --mark 200 -j LOG --log-prefix="--- MARK 2 ---"
iptables -t nat -A POSTROUTING -m mark --mark 200 -j SNAT --to-source N41_IP
5. сам сервер ходит в инет через N3_GATE:
ip route add defailt via N3_GATE
Ну и то, что я получил: первая таблица работает, т.е. пинги идут и вроде как все замечательно. А вот по второй таблице связи нет. Трассировка показывает только 2 хопа: N13_IP и N41_GATE. В логах видны пакеты с обоими маркировками.
Что не так?
П.С. CentOS 7. Сообщение писал из дома по памяти, так что могут быть недостоверности по сравнению с оригиналом, но суть тут отражена.
iproute2, iptables, несколько провайдеров