Bu bash ile ilgili değil, senaryoda kullandığınız komutlar hakkında da değil. Tipik olarak, kaynak IP, hedef IP'ye göre seçilir. Bazı araçlar kaynak IP'yi belirtmenize izin verebilir veya komut dosyasını örneğin uid / gid komutuyla eşleştirebiliyorsanız kaynak IP'yi yeniden yazabilirsiniziptables
.
AFAIK, işlemlere kaynak IP adresleri eklemenin bir yolu yoktur (ve ayrıca devralmak için alt işlemlere de ihtiyacınız olacaktır). IP kaynağını yeniden yazmakta sorun yaşıyorsanız, komut dosyası işlemini özel bir grup kimliğine geçirebilirsiniz:
Kök olarak:
ip4_address=... # fill in your ipv4 address
group=secondaryip # or any other name
groupadd $group
usermod your-user -aG $group # not needed for the root user
iptables -t nat -A POSTROUTING \
-m owner --gid-owner $group \
-j SNAT --to-source $ip4_address
Komut dosyasını kullanarak çalıştırın:
sg secondaryip "/path/to/your/script arg1 arg2"
Alternatif olarak, komut dosyalarınızı kullanarak tek tek komutları da çağırabilirsiniz sg
. Daha fazla bilgi için kılavuz sayfasını okuyun. Ek olarak, betiğinizin kendi başına komut ile çalışmasını sağlamak için püf noktaları da vardır, sg
ancak buna çok ihtiyaç duymamanız gerekir. Klasik newgrp
komutu kullanabilir ve bir kabuk betiği üzerinden geçirebilirsiniz stdin
ancak perl için çalışmaz (yorumunuzdan bahseder).
Not: Kodda kullanılan komutlar değiştirilen kaynak IP'yi bilmez ancak bu genellikle bir sorun olmamalıdır.
Tamamlanma adına, başka bir yol daha var. Bazı libc sembollerini değiştirmek için LD_PRELOAD ortam değişkenini kullanabilirsiniz, örneğin connect()
, belirli bir kaynak adrese bağlanma gibi ek eylemler gerçekleştirecek kendi sürümünüz ile. Ama bu biraz gelişmiş bir C programlaması ve konvansiyonel waeponlarla daha iyi uyursunuz :).