Portál AbcLinuxu, 10. května 2025 16:46

Dotaz: Rozdělení procesů na IP adresy

Mihaloo avatar 26.6.2018 13:43 Mihaloo | skóre: 2
Rozdělení procesů na IP adresy
Přečteno: 459×
Odpovědět | Admin
Ahoj, mám 2 procesy, u kterých potřebuji, aby každý zakládal nová spojení z jiné IP adresy.

Například by stačilo něco takového:
net-bind -D wlan0 -exec {Program 192.168.1.1}
net-bind -D wlan0:1 -exec {Program 192.168.1.2}
Zkoušel jsem to namespacema, ale u wlan0 mi to nefunguje
# Add a new namespace called test_ns
ip netns add test_ns

# Set test to use eth0, after this point eth0 is not usable by programs
# outside the namespace
ip link set wlan0 netns test_ns
Vyhodí chybu RTNETLINK answers: Invalid argument

Zkoušel jsem procesy spouštět na základě uživatelů, ale nevím jak to pak rozdělit. v IPtables je na to modul. Nenapadá někoho něco?
|D-SERVERS.CZ| webhosting and gamehosting |
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

26.6.2018 16:48 marek
Rozbalit Rozbalit vše Re: Rozdělení procesů na IP adresy
Odpovědět | | Sbalit | Link | Blokovat | Admin
Dobry den.

namespacama to jde.

nejdrive si ale musite udelat bridge:

brctl addbr br0
ip link set up wlan0
brctl addif br0 wlan0
ip link set wlan0 up
ip addr add 10.0.0.1/24 dev br0
ip route add default via 10.0.0.138 dev br0
ip netns add test_ns
ip link add veth0 type veth peer name veth1
ip link set veth1 netns test_ns
ip netns exec test_ns ip link set veth1 up
ip netns exec test_ns ip add add 10.0.0.2/24 dev veth1
ip netns exec test_ns ip route add default via 10.0.0.138 dev veth1
ip netns exec test_ns ping -c1 10.0.0.138

nezkousel jsem to presne takto, tak je tam mozna nejaky preklep.

ale ideove je to spravne.

marek
26.6.2018 16:51 marek
Rozbalit Rozbalit vše Re: Rozdělení procesů na IP adresy
chybka se vloudila, jeste tam chybi:
brctl addif br0 veth0
marek
26.6.2018 21:22 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Rozdělení procesů na IP adresy
brctl addif br0 wlan0

Tohle může být problém. Mnohá wi-fi zařízení (z těžch běžných dost možná i většinu) lze z technických důvodů dát do bridge jen pokud jsou v AP režimu.

Mimochodem, když už na všechno ostatní používáte ip, je zbytečné si to kazit použitím brctl:

@@ -1,13 +1,13 @@
-brctl addbr br0
+ip link add br0 type bridge
 ip link set up wlan0
-brctl addif br0 wlan0
+ip link set wlan0 master br0
 ip link set wlan0 up
 ip addr add 10.0.0.1/24 dev br0
 ip route add default via 10.0.0.138 dev br0
 ip netns add test_ns
 ip link add veth0 type veth peer name veth1
 ip link set veth1 netns test_ns
-brctl addif br0 veth0
+ip link set veth0 master br0
 ip link set veth0 up
 ip netns exec test_ns ip link set veth1 up
 ip netns exec test_ns ip add add 10.0.0.2/24 dev veth1
26.6.2018 18:27 iwk
Rozbalit Rozbalit vše Re: Rozdělení procesů na IP adresy
Odpovědět | | Sbalit | Link | Blokovat | Admin
Slusne programy niekedy maju parameter alebo konfiguracnu option, ktorou sa im povie na akej IP maju pocuvat. Z nej potom robia aj odchodie spojenia.

Este by to mohlo ist cez iptables, ak bezia procesy pod roznymi uzivatelmi.

nieco na styl, ze oznacis pakety od toho uid
$IPTABLES -t mangle -A OUTPUT -m owner --uid-owner 1003  -j MARK --set-mark 2
$IPTABLES -t mangle -A OUTPUT -m owner --uid-owner 1003  -j CONNMARK --save-mark
a potom pre ten mark das SNAT
$IPTABLES -t nat -A POSTROUTING -m mark --mark 2 -j SNAT --to-source 100.64.0.1
26.6.2018 21:13 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Rozdělení procesů na IP adresy
Odpovědět | | Sbalit | Link | Blokovat | Admin
net-bind -D wlan0 -exec {Program 192.168.1.1}
net-bind -D wlan0:1 -exec {Program 192.168.1.2}

Netuším, co má dělat net-bind, ale základní problém bude v tom, že už přes 19 let ve skutečnosti žádné "wlan0:1" neexistuje.

ip link set wlan0 netns test_ns

Tady je trochu technická záludnost, že jak se wi-fi zařízení skládá ze dvou logických částí ("phy" a "mac"), korespondence nemusí být 1:1 a vždy je potřeba mít jedno zařízení (phy) se vším, co k němu patří, ve stejném namespace. Takže je potřeba použít

  iw phy ... set netns ...
27.6.2018 09:48 jbohac | skóre: 19 | Praha 5
Rozbalit Rozbalit vše Re: Rozdělení procesů na IP adresy
Odpovědět | | Sbalit | Link | Blokovat | Admin
s namespacama nemám osobní zkušenost, takže jsem možná mimo, ale...

Nešlo by to zařídit jen různejma routovacíma tabulkama v těch namespacech, a ne vytvářenim celejch oddělenejch síťovejch interfaců?

Interfacy by byly společný, a byly by na nich všechny potřebný IP adresy. V jednotlivejch NS by byly různé defaultrouty s parametrem "src"...
27.6.2018 09:58 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Rozdělení procesů na IP adresy

Každé rozhraní je jen v jednom netns (jen lo vypadá, že je ve všech, ale ve skutečnosti má každý své). Obvykle se to řeší pomocí veth párů (jeden veth se dá do netns, druhý se nechá v init).

Ale když tak o tom přemýšlím, možná je to vzácný případ, kdy by se hodilo použít ipvlan. Nebo macvlan by taky mohl fungovat. Prostě nad skutečným rozhraním udělat ipvlan (nebo macvlan), přesunout ho do toho netns, dát mu tu druhou adresu a nakonfigurovat routing.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.