Sziasztok!
Abban szeretném a segítségetek kérni, hogy szeretrnék port forwardingot csinálni egy linuxon.
Van egy, nevezzük: "A" Windows alkalmazás szerver szeretné elérni "C" és "D" Windows MS SQL szervereket management studióból.
Viszont be kell építeni egy köztes "port forwarding" linuxot ami egy az egyben továbbítja a kéréseket C és D szerverek felé.
A Linux gép legyen "B" szerver (amúgy Centos7), ebben van egy eth0 két(!) IP címmel. Azt szeretném megoldani, hogy ha A szerver felöl jön kérés a B linux szerver egyik IP címére akkor az forwardingoljon C szerver felé.
Ha pedig A szerver felől jön kérés a linux másik IP címére akkor az forwardingoljon D szerver felé.
IP címekkel szemléltetve:
192.168.1.100 (A szerver) --> 10.10.10.1 (linux eth0 egyik IP) --> 10.100.10.100:1433 (MS SQL server)
192.168.1.100 (A szerver) --> 10.10.10.2 (linux eth0 másik IP) --> 10.100.10.200:1433 (MS SQL server)
Próbáltam firewall-cmd -vel de csak az egyik IP-re tudtam beállítani.
firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="192.168.1.100" forward-port to-addr="10.100.10.100" to-port="1433" protocol="tcp" port="1433"'
próbáltam IP tables megannyi parancsával de nem akar menni.
20+ órát googliztam, de nem találok megoldást. Tudnátok segíteni? Köszönöm!
- 179 megtekintés
Hozzászólások
Reverse proxyként beállított nginx-el esetleg, bár még csak webre próbáltam sql-re nem...
- A hozzászóláshoz be kell jelentkezni
Inkább haproxy, tcp-módban. Kisebb, egyszerűbb. Két frontend a két IP-re felhúzva, aztán annyival annyi.
- A hozzászóláshoz be kell jelentkezni
DST NAT -ot mondták még.
- A hozzászóláshoz be kell jelentkezni
iptables -t nat -I PREROUTING -s 192.168.1.100 -d 10.10.10.1 -j DNAT --to-destination 10.10.10.100:1433
A másik meg a másik :)
- A hozzászóláshoz be kell jelentkezni
Persze a filter táblában a forward lánc még tilthatja.
kellene ide:
iptables -t filter -L -nv
iptables -t nat -L -nv
kimenete, ha nem hosszú.
- A hozzászóláshoz be kell jelentkezni
Szerintem kene egy POSTROUTING SNAT is, hogy visszatalaljanak a csomagok. De fixme. Valami ilyesmi:
iptables -t nat -A POSTROUTING -p tcp -d 10.10.10.100 --dport 1433 -j SNAT --to-source 10.10.10.1
Es ez gondolom igy van beallitva: # sysctl net.ipv4.ip_forward net.ipv4.ip_forward = 0
- A hozzászóláshoz be kell jelentkezni
Valóban. Ezt el is felejtettem.
Ha megírná mi van most a tűzfalban gyorsan megoldanánk :)
Az ip_forward -nak 1 kell.
- A hozzászóláshoz be kell jelentkezni
Köszi!
Sajnos a másik IP-vel nem megy.
Nekem ennek 1-es az értéke:
# sysctl net.ipv4.ip_forward net.ipv4.ip_forward = 1 <--
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
--to-source helyett --to-destination, SNAT helyett DNAT
- A hozzászóláshoz be kell jelentkezni
Köszi, de sajnos nem jó :(
Csak az egyik IP-re megy. A másikra már nem. :(
- A hozzászóláshoz be kell jelentkezni
firewall-cmd --add-rich-rule='rule family=ipv4 destination address=y.y.y.y forward-port port=1433 protocol=tcp to-port=1433 to-addr=x.x.x.x'
- A hozzászóláshoz be kell jelentkezni
Sajnos a firewall-cmd nem tudja szétválasztani, hogy a linuxban melyik IP címre érkezik a kérés.
- A hozzászóláshoz be kell jelentkezni
firewall-cmd --add-rich-rule='rule family=ipv4 destination address=y.y.y.y forward-port port=1433 protocol=tcp to-port=1433 to-addr=x.x.x.x'
=
destination address=y.y.y.y - ez a local cim, ide jön a kérés
forward-port port=1433 - ez a local port, ide jön a kérés
to-addr=x.x.x.x ez a remote cím, ahová továbbitani szeretnéd
to-port=1433 ez a remote port, ahová továbbítani szeretnéd
- A hozzászóláshoz be kell jelentkezni
vi /etc/firewalld/direct.xml, és szépen bele a szabály, valahogy így:
<?xml version="1.0" encoding="utf-8"?>
<direct>
<rule priority="0" table="nat" ipv="ipv4" chain="PREROUTING">-p tcp -s 192.168.1.100 -d 10.10.10.1 -j DNAT --to-destination 10.10.10.100:1433</rule>
<rule priority="0" table="nat" ipv="ipv4" chain="PREROUTING">-p tcp -s 192.168.1.100 -d 10.10.10.2 -j DNAT --to-destination 10.10.10.200:1433</rule>
</direct>
- A hozzászóláshoz be kell jelentkezni
van rá parancs is, de a fenti rich rule elég, kipróbáltam.
firewall-cmd --direct --add-rule ipv4 nat PREROUTING 0 -d 10.10.10.1 -p tcp --dport 1433 -j DNAT --to-destination 10.10.10.100:1433
- A hozzászóláshoz be kell jelentkezni
Elhiszem és köszönöm Neked, de nem jó :(
- A hozzászóláshoz be kell jelentkezni
a fenti teszteket kitörölted? az bezavarhat...
firewall-cmd --reload
+ remove mindenre amit permanentként hozzáadtál és nem müködött.
aztán:
firewall-cmd --add-rich-rule='rule family=ipv4 destination address=10.10.10.1forward-port port=1433 protocol=tcp to-port=1433 to-addr=10.10.10.100'
masquerade be van kapcsolva?
firewall-cmd --list-all
ha nincs
firewall-cmd --zone=<zone> --add-masquerade
- A hozzászóláshoz be kell jelentkezni
Köszönöm!
Béna voltam, kitöröltem mindent, server restart.
De azért a firewall-cmd-t megpróbálom! :)
- A hozzászóláshoz be kell jelentkezni
Persze, hogy elég, amit én írtam, ott a forráscímre is ad szűrést; a tied a "-s 192.168.1.100" nélkül "fordul le" az xml-be kerülő sorra :-)
Jó dolog a firewall-cmd, de nekem az xml matatása jobban kézre áll :)
- A hozzászóláshoz be kell jelentkezni
Köszönöm mindenkinek, jó lett a PRE és POST routing-gal. Kitöröltem mindent, újraindítottam a szervert. Én voltam béne hogy ezeket nem tettem meg.
Köszi !!!
- A hozzászóláshoz be kell jelentkezni