Volání jednoho cíle přes různé veřejné IP z jednoho stroje

Zdravim, mam tu takovy orisek (pro me teda). Mam aplikaci, ktera se chova jako http klient. Potrebuju ale ruzne pozadavky posilat z ruznych ip adres verejnych. Zazadal jsem si tedy u providera o vice pevnych adres, jmenovite 8.

Pouzivam PfSense na hardwaru, ktery ma bohuzel jen asi 4 ETH porty, aktualne to mam jako 1 WAN a zbytek LAN site. Lze PfSense nakonfigurovat takovym zpusobem, aby vsech 8 verejnych adres viselo na jednom WAN portu?

Pak planuji, ze vytvorim ruzne segmenty, kazdy nalinkuju pres jednu IP adresu.

Server, na kterem pobezi nekolik instanci aplikace pak pres jeden ETH port nabinduje vzdy jednu LAN adresu z kazdeho segmentu, takze na eth0 by melo viset 8 vnitrnich adres z ruznych segmentu.

A ted druhy dotaz, lze klientovi rici pres jakou routu ma jit? Jde o to, ze target je stale stejny, ale musim ho volat pro ruzne operace pres ruzne verejne ip adresy.

Jakakoli rada dobra. Diky. Urcite zaklady sitovani mam, ale ja tady vlastne rikam, ze mam 8 dostupnych cest na target a na aplikacni vrstve chci definovat, kterou pouzit v jakem pripade. Lze to?

« Poslední změna: 25. 01. 2018, 19:30:46 od Petr Krčmář »


v

Re:Volani jednoho cile pres ruzne public IP z jednoho stroje
« Odpověď #1 kdy: 25. 01. 2018, 15:14:50 »
o pfsense nic nevím, druhý problém je snadno řešitelný, viz man 3 bind

Re:Volani jednoho cile pres ruzne public IP z jednoho stroje
« Odpověď #2 kdy: 25. 01. 2018, 15:30:01 »
Me prijde, ze bind je pro nabindovani nejake serverove aplikace, tj. kde bude dostupna pro volani. Ja ale potrebuju "bindovat" klienta, na stejnou adresu ale podle url pouzij jinou gateway....

Ja potrebuju pustit napr. nejaky i linux command reknu:
wget 213.168.1.1/getRegistry a potrebuju aby to slo pres route 1.1.1.1
a zaroven, jiny prikaz na stejny cil (stejna IP v internetu) slo na druhou route
wget 213.168.1.1/getValues a potrebuju aby to slo pres route 2.2.2.2

K tomu mi bind nepomuze ne? Nebo se pletu?
« Poslední změna: 25. 01. 2018, 15:32:09 od Ladislav Jech »

asdf111

Re:Volani jednoho cile pres ruzne public IP z jednoho stroje
« Odpověď #3 kdy: 25. 01. 2018, 15:32:40 »
tvoj problem je riesitelny, ale tazko :) predpokladam ze na vsetky externe IPcky budes mat cez rovnaku GW, cize vsetky requesty pojdu cez najprioritnejsiu routu a IPcku. Budes musiet vytvorit viac routovacich tabuliek, priradit im labely/tagy a kazdy packet tagovat cez IPtables podla toho akou tabulkou ho chces posielat von.

v

Re:Volani jednoho cile pres ruzne public IP z jednoho stroje
« Odpověď #4 kdy: 25. 01. 2018, 15:32:56 »
Hm, to ctu, ale tak tohle bude v pohode, pokud uvazuju ze na serveru mam proste tech 8 IP adres a spustim nejakou serverovou aplikaci, tak kazdou muzu nabindovat na specifickou adresu, tomudle taky rozumim. Ale to mi nepomaha s mim problemem, nebo to ctu blbe v tom manualu?

Ja potrebuju pustit napr. nejaky i linux command reknu:
wget 213.168.1.1/getRegistry a potrebuju aby to slo pres route 1.1.1.1
a zaroven, jiny prikaz na stejny cil (stejna IP v internetu) slo na druhou route
wget 213.168.1.1/getValues a potrebuju aby to slo pres route 2.2.2.2

K tomu mi bind nepomuze ne? Nebo se pletu?
vytvoříte socket, bindnete na lokální adresu (tu jednu z osmi) a connectnete se k serveru
jestli to umí wget nevím, ale na linuxu to možné je (používám to)


v

Re:Volani jednoho cile pres ruzne public IP z jednoho stroje
« Odpověď #5 kdy: 25. 01. 2018, 15:34:08 »
tak umí, man wget, --bind-address=ADDRESS

Re:Volani jednoho cile pres ruzne public IP z jednoho stroje
« Odpověď #6 kdy: 25. 01. 2018, 15:44:53 »
Hm, no tak ja si to vyzkousim na tom wgetu, diky moc za tipy, jak to ctu, tak mi to dava uz smysl.

Ja to jeste teda shrnu, jak to bude fungovat, zjednodusim to na situaci s 2 IP adresami.

Takze mam na serveru
adresa   gw                  verejna ip (sedi na firewallu)
172.1.1.1 172.1.1.254  213.1.1.1
172.2.2.2 172.2.2.254  213.2.2.2

Takze na aplikaci bude postup nasledovny:
1. vytvor socket
2. binduj socket na lokalni adresu a port
3. volej 213.1.1.1 a vzdy to pujde pres specifickou branu lokalni adresy, tj. pres jinou verejnou adresu.

Pokud bych mel problemy s pfsense, protoze mam omezeny pocet portu, tak tu konektivitu muzu pichnout primo na server a nastavit verejne adresy na nem a pak by to vypadalo takhle na serveru:
adresa          gw (stejna gw pro obe lokalni adresy)   target
213.168.5.5  213.168.1.242                                    213.1.1.1
213.168.6.6  213.168.1.242                                    213.1.1.1

Takze to by taky slo eventuelne, ze jo?

Diky moc za pomoc, super.

v

Re:Volani jednoho cile pres ruzne public IP z jednoho stroje
« Odpověď #7 kdy: 25. 01. 2018, 15:49:57 »
tak nějak, ale na klientovi se binduje jenom na adresu, port vybírá OS, teda asi jde i port, ale to se nemá a ani to na klientovi nedává smysl
o pfsense vím stále kulové

Re:Volani jednoho cile pres ruzne public IP z jednoho stroje
« Odpověď #8 kdy: 25. 01. 2018, 15:55:07 »
...

1. Lze mít více adres na stejném interface, freebsd to umí, jestli pfSense naklikat, to nevím.
2. Pokud máte málo síťovek, pak bych použil switch s podporou 802.1q a poslal je jako 5 oddělených vlan v jednomu trunku.
3. Pokud to budete mít oddělené pomocí vlan, nebo na samostatných interfacech, lze na každou síťovku nastavit jinou FIB.
4. Aplikaci pak voláte pomocí "setfib -F 1 aplikace" - a každá aplikace bude pracovat na jiné síťovce a s jinou routovací tabulkou.
5. Patrně budete potřebovat nastavit sysctl net.add_addr_allfibs=0

Vím, je to obecné, není to přímo pro pfsense. Co čtu na jednoduché dotazy na googlu, pfsense má podporu FIB vypnutou, takže byste musel "uskočit" na čisté freebsd. V linuxu to řešitelné také je, ale poměrně složitě přes pravidla v iptables, kde se podle procesu, uživatele nebo jiného kritéria omarkuje spojení a to se routuje jinou routovací tabulkou.

Re:Volani jednoho cile pres ruzne public IP z jednoho stroje
« Odpověď #9 kdy: 25. 01. 2018, 15:55:36 »
tvoj problem je riesitelny, ale tazko :) predpokladam ze na vsetky externe IPcky budes mat cez rovnaku GW, cize vsetky requesty pojdu cez najprioritnejsiu routu a IPcku. Budes musiet vytvorit viac routovacich tabuliek, priradit im labely/tagy a kazdy packet tagovat cez IPtables podla toho akou tabulkou ho chces posielat von.

Hm, ano, urcite to bude stejna GW. Takze bud
1. budu mit firewal, kde bude 8 fyzickych WAN pripojeni, kazde bude viset na jednom portu a k nim nalinkuju 8 vnitrnich adres, tam uz bude pak route, ktera bude viditelna na serveru vzdy v jinem segmentu, resp. jina adresa. Takze takto to pujde.
2. nebo jit touhle cestou co pises, hm, to je dost prace :-), ale zase se neco naucim no hhh

No ja to zkusim nejdriv nejakou jednodussi cestou.

Otazka: Ten problem je proste v tom, ze se musim vyhnout situaci, kdy mi dve GW maji smerovat na stejny cil a visi na jednom ETH portu, chapu to spravne? V tom pripade budu muset jit tvoji cestou.

Re:Volani jednoho cile pres ruzne public IP z jednoho stroje
« Odpověď #10 kdy: 25. 01. 2018, 15:56:33 »
...

1. Lze mít více adres na stejném interface, freebsd to umí, jestli pfSense naklikat, to nevím.
2. Pokud máte málo síťovek, pak bych použil switch s podporou 802.1q a poslal je jako 5 oddělených vlan v jednomu trunku.
3. Pokud to budete mít oddělené pomocí vlan, nebo na samostatných interfacech, lze na každou síťovku nastavit jinou FIB.
4. Aplikaci pak voláte pomocí "setfib -F 1 aplikace" - a každá aplikace bude pracovat na jiné síťovce a s jinou routovací tabulkou.
5. Patrně budete potřebovat nastavit sysctl net.add_addr_allfibs=0

Vím, je to obecné, není to přímo pro pfsense. Co čtu na jednoduché dotazy na googlu, pfsense má podporu FIB vypnutou, takže byste musel "uskočit" na čisté freebsd. V linuxu to řešitelné také je, ale poměrně složitě přes pravidla v iptables, kde se podle procesu, uživatele nebo jiného kritéria omarkuje spojení a to se routuje jinou routovací tabulkou.

Re:Volani jednoho cile pres ruzne public IP z jednoho stroje
« Odpověď #11 kdy: 25. 01. 2018, 16:01:10 »
...

1. Lze mít více adres na stejném interface, freebsd to umí, jestli pfSense naklikat, to nevím.
2. Pokud máte málo síťovek, pak bych použil switch s podporou 802.1q a poslal je jako 5 oddělených vlan v jednomu trunku.
3. Pokud to budete mít oddělené pomocí vlan, nebo na samostatných interfacech, lze na každou síťovku nastavit jinou FIB.
4. Aplikaci pak voláte pomocí "setfib -F 1 aplikace" - a každá aplikace bude pracovat na jiné síťovce a s jinou routovací tabulkou.
5. Patrně budete potřebovat nastavit sysctl net.add_addr_allfibs=0

Vím, je to obecné, není to přímo pro pfsense. Co čtu na jednoduché dotazy na googlu, pfsense má podporu FIB vypnutou, takže byste musel "uskočit" na čisté freebsd. V linuxu to řešitelné také je, ale poměrně složitě přes pravidla v iptables, kde se podle procesu, uživatele nebo jiného kritéria omarkuje spojení a to se routuje jinou routovací tabulkou.

Tak a uz se to komplikuje, nadhera :-). Takze zde taky plati, abych se tomuhle vyhnul, tak mi bude stacit, kdyz budu mit na vstupu (public ip ) dost portu, tj. kazdou adresu nalinkuju k jednomu interfacu, uvazuju spravne?

Jedna se stejne o starsi Watchguard, ktery jsem customizoval a premajznul tam PfSense uz nejakych 5 let zpatky a bezi to na karte a nejakem Pentiu3, takze i uvazuju o upgradu. Jenze pokud budu uvazovat do budoucnosti, tak tech IP adres budu potrebovat asi celkem reknu bratru 32 a to uz je 32 portu, takze to bude lepsi asi resit custom routing tables, apod. co tu uvadite, abych si usetril naklady za nejakou masinku.

Ted budu uvazovat jak to resit hardwarove
Tak mohl bych poridit rekneme 6x Dell 6 portove gigabitove karty (kazda potrebuje 8x PCI express), sehnat nejakou desku s 3x pci expres sloty a BIOS podporujici PCI express switching, tj. kazdy 16x slot bych rozdelil na dva 8x, abych tam tech 6 karet narval. Cena: karty asi suma asi 15,000 bych sehnal, deska cpu pamet aspol bratru 15,000. No takze reseni je investice bratru 30,000 korun.

Takze jdu studovat vsechny podklady, ktere jste mi zde uvedli, diky moc.
« Poslední změna: 25. 01. 2018, 16:08:43 od Ladislav Jech »

Re:Volani jednoho cile pres ruzne public IP z jednoho stroje
« Odpověď #12 kdy: 25. 01. 2018, 16:09:21 »
Tak a uz se to komplikuje, nadhera :-). Takze zde taky plati, abych se tomuhle vyhnul, tak mi bude stacit, kdyz budu mit na vstupu (public ip ) dost portu, tj. kazdou adresu nalinkuju k jednomu interfacu, uvazuju spravne?

Pokud mají mít každá jinou gateway, pak je potřeba každý z interfaců nastavit na jinou FIB.
Je jedno, jestli je ten interface fyzický, nebo jen 802.1q VLAN, důležitá je ta FIB.

Re:Volani jednoho cile pres ruzne public IP z jednoho stroje
« Odpověď #13 kdy: 25. 01. 2018, 16:18:28 »
Hm, no tak ja si to vyzkousim na tom wgetu, diky moc za tipy, jak to ctu, tak mi to dava uz smysl.

Ja to jeste teda shrnu, jak to bude fungovat, zjednodusim to na situaci s 2 IP adresami.

Takze mam na serveru
adresa   gw                  verejna ip (sedi na firewallu)
172.1.1.1 172.1.1.254  213.1.1.1
172.2.2.2 172.2.2.254  213.2.2.2

Takze na aplikaci bude postup nasledovny:
1. vytvor socket
2. binduj socket na lokalni adresu a port
3. volej 213.1.1.1 a vzdy to pujde pres specifickou branu lokalni adresy, tj. pres jinou verejnou adresu.
Ted mi doslo, ze tohle nebude fungovat stejne, protoze target je porad stejnej. Ja proste budu muset resit ty custom routovaci tabulky at tak ci tak proste proto, ze z jednoho stroje chci volat jinej stroj ale pres ruzny interfaces pri ruznejch podminkach.

Re:Volani jednoho cile pres ruzne public IP z jednoho stroje
« Odpověď #14 kdy: 25. 01. 2018, 16:20:23 »
Ted mi doslo, ze tohle nebude fungovat stejne, protoze target je porad stejnej. Ja proste budu muset resit ty custom routovaci tabulky at tak ci tak proste proto, ze z jednoho stroje chci volat jinej stroj ale pres ruzny interfaces pri ruznejch podminkach.

Přesně tak. Takže Vám zbývá na FreeBSD přes různá FIB, nebo na Linuxu přes policy routing. Radím freebsd, řešení je jednodušší a čitelnější, ale fungovat budou oba systémy.