Właśnie znalazłem rozwiązanie mojego problemu,
Specjalne podziękowania dla @Slava za wskazanie mi drogi, w końcu to był iptables.
Tak więc otrzymywałem komunikat „Odmowa połączenia MySQL” podczas próby zdalnego połączenia, więc szukałem sposobu, aby zobaczyć dzienniki połączeń TCP i znalazłem tcpdump
polecenie.
Uruchamiając sudo tcpdump port 3306 -vvv -n
Za każdym razem, gdy próbowałem połączyć się zdalnie, widziałem następujące dane wyjściowe:
Przeszukałem stronę podręcznika tcpdump i zobaczyłem, że R oznacza flagę TCP RST (RESET).
Przeszukałem trochę i znalazłem ten pytanie a jego przyjęta odpowiedź doprowadziła mnie ponownie do IPTABLES, które @Slava zasugerował od czasu pierwszego komentarza.
Wtedy przyjrzałem się uważnie i zobaczyłem, że mój INPUT ACCEPT tcp:3306 został zdefiniowany po regule odrzucania TCP REJECT-with tcp-reset, stąd log się wyświetlał.
Po tym po prostu usunąłem regułę akceptowania tcp:3306 i dodałem ją do reguł odrzucania tcp i voila!
iptables -D INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
iptables -I INPUT {line number from the first reject tcp rule} -p tcp -m tcp --dport 3306 -j ACCEPT
IPTABLES teraz wygląda tak i wreszcie mogę połączyć się zdalnie z MySQL:
Aby wyświetlić listę iptables z numerami linii, wpisz:
sudo iptables -nL --line-numbers
Uwagi końcowe:
- Można to poprawić, umieszczając na białej liście źródłowy adres IP, z którego nawiązujesz połączenie zdalne ze względów bezpieczeństwa.