Ако имаме следната ситуация:

Доставчик 1 - закачен на eth0 с адреси *x.x.x.0/30* (където x.x.x.2 е ip-то при теб, a x.x.x.1 е ИП-то на доставчика, който ти ползваш за gw) Доставчик 2- закачен на eth1 с адреси *y.y.y.0/30* (където y.y.y.2 е ip-то при теб, a y.y.y.1 е ИП-то на 2рия доставчик, който ти ползваш за gw)

Ако правилно съм разбрал въпросът ти, най-вероято имаш някакъв маршрутизиращ протокол (BGP?) който определя кой destination е по-добър. Следователно част от пакетите ще излизат през eth0 а останалите през eth1 (според зависи). Така, ако това което искаш да направиш е всичко което излиза през eth1 да бъде изпращано НЕ към y.y.y.1 а към друг адрес (a.b.c.d), то можеш да опиташ следното:

*iptables -t mangle -I OUTPUT -o eth1 -j MARK --set-mark 20* # /Всичко което излиза от eth1 бива маркирано с локална марка 20/ *echo 20 test > /etc/iproute2/rt_tables* # /Създаваме нова маршрутизираща таблица различна от main/ *ip rule add fwmark 0x14 table test* # /Създаваме policy based routing чиято функция е да преглежда всички пакети, и онези който са маркирани с марка 20 (0x14 in hex) да бъдат маршрутизирани през таблицата test вместо основната маршрутизираща таблица (main)/ *ip route add table test default via a.b.c.d *# /Изпращаме всички пакети попаднали в тази маршрутизираща таблица да излизат през адрес a.b.c.d /

Незнам дали съм схванал правилно въпросът ти, но ако е така - то това би-трябвало да работи.

Пробвай и сподели резултатите!

Поздрави!

Rossen Antonov wrote:
Банда здравейте,

Машината ми има достъп до интернет през два доставчика. С цел прескачане на някой проблеми искам да реализирам DNAT след рутиране, т.е. ако определени заявки в конкретния момент излизат през втория интернет доставчик, то destination-а им да се променя. Ако излизат през първия - да не се пипат. В зависимост от конкретни условия routing таблицата ми се мени с един два реда, забивани статично.

За завки генерирани от локалната машина решението си доиде от самосебе си:

iptables -t nat -A OUTPUT -o eth2 -d $IP_ADDR1 -j DNAT --to-destination $IP_ADDR2,
където eth2 е лан картата към втория доставчик.

За съжаление в документацията на iptables пише, че това нещо не може да бъде направено за пакети, които не са генерирани от локалната машина, а се рутират през нея. В PREROUTING веригата не мога да добавя такова правило, защото не е ясно кой е OUTGOING (-o) интерфейса. В POSTROUTING веригата пък DNAT-а не е позволен.

Дали някой е намирал забиколен начин за реализация на подобна идея?

Поздрави:
--Росен





------------------------------------------------------------------------

_______________________________________________
Lug-bg mailing list
[email protected]
http://linux-bulgaria.org/mailman/listinfo/lug-bg

--
Danail Petrov
Senior Network Administrator
Evolink, Sofia
+359(2)9691650
www.evolink.com
icq uin 989677

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

_______________________________________________
Lug-bg mailing list
[email protected]
http://linux-bulgaria.org/mailman/listinfo/lug-bg

Reply via email to