/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Seamless udskiftning af MySQL-server
Fra : Kasper Johansen


Dato : 23-11-09 18:14

Hej gruppe.

Jeg har fået til opgave at udskifte en webservers MySQL-server til en
anden ny server - webserveren kører i øjeblikket en masse webapps der
forbinder til localhost.

Jeg har forsøgt med lidt iptables automatisk at viderstille alt trafik
til port 3306 videre til den nye maskine - som der er placeret på
192.168.1.10 (webserveren er 192.168.1.1).

Alt virker hvis jeg forbinder mig fra en anden maskine. Hvis jeg dog
kører et testscript på selve serveren, som der forbinder til localhost
eller 192.168.1.1 - så forsøger den at forbinde til sig selv og bruger
dermed ikke min iptables regel. Forbindelsen fejler derfor, når jeg har
lukket for MySQL-serveren på 192.168.1.1.


Min regel er som følger:

iptables -A FORWARD -p tcp --dport 3306 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 3306 -j DNAT
--to-destination 192.168.1.10:3306


Jeg mener at have læst engang, at MySQL ikke bruger sockets til at
forbinde sig lokalt (nok for at spare nogle ressourcer). Og dermed vil
det selvfølgelig ikke virke, da iptables vel kun påvirker nettrafik. Er
det derfor?


--
Med venlig hilsen
Kasper Johansen

 
 
Christian Laursen (23-11-2009)
Kommentar
Fra : Christian Laursen


Dato : 23-11-09 18:18

Kasper Johansen wrote:

> Jeg mener at have læst engang, at MySQL ikke bruger sockets til at
> forbinde sig lokalt (nok for at spare nogle ressourcer). Og dermed vil
> det selvfølgelig ikke virke, da iptables vel kun påvirker nettrafik. Er
> det derfor?

Ja, mysql bruger unix sockets, når klienten forbinder til localhost.

Du skal nok enten have alle klientscripts til at forbinde via inet
sockets eller have gang i en lille proxy der kan lytte på en unix socket
og forwarde trafikken til den ønskede mysql-server (Under antagelse af
at protokollen er den samme på begge slags sockets).

--
Christian Laursen

Kent Friis (23-11-2009)
Kommentar
Fra : Kent Friis


Dato : 23-11-09 18:32

Den Mon, 23 Nov 2009 18:14:27 +0100 skrev Kasper Johansen:
>
> Min regel er som følger:
>
> iptables -A FORWARD -p tcp --dport 3306 -j ACCEPT
> iptables -t nat -A PREROUTING -p tcp --dport 3306 -j DNAT
> --to-destination 192.168.1.10:3306
>
>
> Jeg mener at have læst engang, at MySQL ikke bruger sockets til at
> forbinde sig lokalt (nok for at spare nogle ressourcer). Og dermed vil
> det selvfølgelig ikke virke, da iptables vel kun påvirker nettrafik. Er
> det derfor?

Det har du fået svar på andetsteds.

En anden ting er at du skal bruge INPUT eller OUTPUT i stedet for
FORWARD, når det er lokalt genereret trafik, og tilsvarende OUTPUT
i stedet for PREROUTING, når i -t nat.

Fra iptables(8):

filter:
    This is the default table (if no -t option is
       passed). It contains the built-in chains INPUT
(for packets destined to local sockets), FOR­
       WARD (for packets being routed through the
box), and OUTPUT (for locally-generated pack­
       ets).
            
    nat:
    This table is consulted when a packet that cre­
ates a new connection is encountered. It con­
       sists of three built-ins: PREROUTING(for
       altering packets as soon as they come in), OUT­
PUT (for altering locally-generated packets
       before routing), and POSTROUTING (for altering
    packets as they are about to go out).

Mvh
Kent
--
"The Brothers are History"

Søg
Reklame
Statistik
Spørgsmål : 177579
Tips : 31968
Nyheder : 719565
Indlæg : 6409073
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste