Настройте процесс для использования определенного сетевого адаптера.

new_file="$(find dir/ -type f -exec stat --printf='%n\0%Y\n' {} + | sort -k2,2 -nt '\0' | tail -n1 | cut -d '' -f1)"; tar -zcf foo.tar.gz dir/; touch -r "$new_file" foo.tar.gz

Пример того, что происходит

tar -zcf foo.tar.gz dir /; touch -r fileX foo.tar.gz

Вы должны изменить foo.tar.gz , dir / в приведенной выше команде

Она

  • находит все файлы в dir / (то же самое для tarred)
  • получает метку времени последнего изменения в секундах, так как эпоха
  • сортирует численно и берет нижнюю (самую последнюю).
  • touch использует этот файл как ссылку, когда корректировка отметки времени foo.tar.gz.
2
23.01.2017, 04:50
1 ответ

В основном вы хотите "заключить" свой процесс в тюрьму и заставить его привязаться к определенной сетевой карте. Многие люди используют LD_PRELOAD, но LD_PRELOAD не контролирует маршрут, используемый процессами. Он будет использовать первый маршрут. Одно из возможных решений было на SuperUser https://superuser.com/questions/241178/how-to-use-different-network-interfaces-for-different-processes/241215#241215

ip netns может это сделать .

TL; DR: Создайте сетевые пространства имен, свяжите с ними интерфейсы и затем запустите "ip netns exec NAME cmd ..."

Просто проверьте, поддерживает ли ваш дистрибутив ip netns ... (Backtrack 5r3 не поддерживает, тогда как Kali делает;))

ПОДРОБНЕЕ:

#create netns
ip netns add myNamespace
#link iface to netns
ip link set eth0 netns myNamespace
#set ip address in namespace
ip netns exec myNamespace ifconfig eth0 192.168.0.10/24 up
#set loopback (may be needed by process run in this namespace)
ip netns exec myNamespace ifconfig lo 127.0.0.1/8 up
#set route in namespace
ip netns exec myNamespace route add default gw 192.168.0.1
#force firefox to run inside namespace (using eth0 as outgoing interface and the route)
ip netns exec myNamespace firefox
6
27.01.2020, 21:56

Теги

Похожие вопросы