Имаш default GW1. Когато ползваш tcp_outgoing_address:
# TAG: tcp_outgoing_address # Allows you to map requests to different outgoing IP addresses # based on the username or sourceaddress of the user making # the request. # # tcp_outgoing_address ipaddr [[!]aclname] ... # # Example where requests from 10.0.0.0/24 will be forwareded # with source address 10.1.0.1, 10.0.2.0/24 forwarded with # source address 10.1.0.2 and the rest will be forwarded with # source address 10.1.0.3. Обърни внимание тук: На пакета не се казва през кой GW да излезе!, а му се слага желан source address. Когато му сложиш source address-а да бъде този на интерфейс 3, той пак ще си излезе през GW1 (понеже GW1 ти е default). Ако искаш да позваш тази опция, то трябва да накраш пакетите със source addres този на интерфейса 3 да минават през GW3, а не през GW1. Директното ползване на тази опция би сработило в следната ситуация: доставчика ти е дал 2 IP адреса (от една локална мрежа с един и същ gw) и искаш да ползваш интернет и през 2-та (например половината пакети да излизат с IP1, а другата половина с IP2). Това ще работи, защото GW за IP1 и IP2 е един и същ и е default. В случая като твоя, когато IP1 и IP2 са от различни мрежи и на различни интерфейси, трябва да имаш някакво правило, което да прехвърля пакетите от IP2 към GW2 (когато GW1 ти е default). Аз поне така си обяснявам защо трафика не ти излиза през GW3, когато плзваш тази функция. ПС: надявам се да е станало ясно какво имах предвид.