Люди здесь имеют, некоторые предложили некоторые осуществимые альтернативы для того, что Вы хотите сделать. При маршрутизации и источник NAT может выручить, но можете, или может не решить проблему, которую Вы пытаетесь решить.
Можно сделать точно, что Вы спросили, готовы ли Вы очень о немного. Можно использовать волшебство функционального вмешательства через LD_PRELOAD
переноситься bind()
системный вызов с кодом по Вашему выбору.
Следовать страницы имеют информацию, которая предоставляет больше подробную информацию об этом решении:
Это будет только работать пока код, который Вы выполняете, не SUID (из соображений безопасности, которые программы SUID/SGID не могут быть изменены с помощью LD_PRELOAD
).
С wget можно использовать - связывают адресный
Иначе я думаю Вы или должен указать маршрут для целевого IP-адреса или взгляд в программе, которую Вы пытаетесь использовать, если это имеет способ решить связывание/исходный адрес.
Многие, но ни в коем случае все, программы имеют опцию связать с определенным адресом. У некоторых, как wget (как указано fbh) есть параметр командной строки для определения который адрес связать с. Намного больше подобных серверу программ, таких как апач и сквид, управляет этим в своем конфигурационном файле. Это всегда будет определенным для программы.
Для программ, которые не поддерживают привязку к определенному адресу, Ваши опции могут быть более ограничены, в зависимости от того, с какой программой Вы имеете дело.
Для программы сервера (который принимает входящие соединения), можно обычно выполнять то же самое путем слушания на всех адресах (который обычно является значением по умолчанию), затем с помощью iptables, или внешний маршрутизатор, к forewall другие адреса.
Более хитрая вещь для исходящих соединений. Здесь Вам будет нужно что-то, больше любят описанный в ответе, с которым Вы связались в Вашем вопросе. Проблема с этим - зависящий от адреса назначения, не исходной программы.
Вы можете выполнять то, что Вы хотите с iptables и правилом SNAT.
iptables -A POSTROUTING -p tcp --dport 80 -j SNAT --to-source 1.2.3.4
Это правило iptables (который я не протестировал), должно изменить исходный адрес на любом трафике, собирающемся портировать 80. При необходимости в том же поведении и для tcp и для трафика UDP необходимо было бы создать два правила, заменив '-p tcp' с '-p udp' во втором.