Предположим, вы на линуксе для безопасности всегда используете впн и вам надо, не отключая его, сделать запрос к какому-нибудь сайту через IP провайдера (потому что сайт блочит заход с впн или вы тестируете блокировки). Случайно нашёл прогу, которая может это сделать https://github.com/JsBergbau/BindToInterface. По сути, универсальный аналог curl --interface. Может, кому пригодится для тестов.
Недостатки:
- dns резолвится всегда через дефолтный шлюз.
- утекает ipv6, нет его поддержки.
- я думаю, не будут поддерживаться static бинарники, но даже go и rust можно собрать в shared.
Сборка:
gcc -nostartfiles -fpic -shared bindToInterface.c -o bindToInterface.so -ldl -D_GNU_SOURCE
Запуск (на примере проксирования curl):
BIND_INTERFACE=enp1s0 DNS_OVERRIDE_IP=9.9.9.9 LD_PRELOAD=./bindToInterface.so /usr/bin/curl https://ifconfig.me
Узнать какие есть шлюзы в системе:
ip a