Stos IP działa na zasadzie minimalizacji wysiłku. Jeżeli pakiet da się "po prostu" przerzucić między buforami kart sieciowych, to to zostanie zrobione.
Żeby przełamać tę zależność, musisz jakoś odseparować obie instancje. Możesz użyć wirtualizacji, ale wersja "lite" to
namespace'y.
# Zrób nowego namespace'a
ip netns add TEST_NET
# Podnieś w nim interfejs loopback
ip -n TEST_NET link set lo up
# Przenieś kartę eth1 (popraw na swoją) do namespacea
# Pojawi się w nim "czyściutka", bez konfiguracji i routingu.
# Równocześnie ślad po niej powinien zniknąć z "normalnego"
# systemu
ip link set eth1 netns TEST_NET
# Skonfiguruj
ip -n TEST_NET addr add IP/MASK dev eth1
ip -n TEST_NET route add default via IP_ROUTERA dev eth1
# uruchom aplikację w konkretnym namespaceu
# To powinno przejść przez router, bo NS i gospodarz nie
# widzą się inaczej, niż przez kable.
ip netns exec TEST_NET tracert IP_PIERWSZEJ_KARTY
Nie zweryfikuję teraz tego, bo nie mam odpowiedniego środowiska.
Co do samej funkcjonalności
netns to jestem jej pewien, bo do pracy zawodowej robiłem dzikie konfiguracje z wieloma bridge'ami (każdy w innym NS) pospinanych wzajemnie wirtualnymi Ethernetami (jeden koniec wirtualnego kabla w jednym ns, drugi w innym) i do bridgy powpinane serwery w jeszcze innych namespacach (w sumie ostateczna konfiguracja miała chyba 16 namespaców z jednym jedynym root-bridgem widzianym z gospodarza). Dało się dzięki temu przetestować sieć kilkudziesięciu węzłów P2P na pojedynczej instancji OS-a bez potrzeby wirtualizacji.