Am un docker Mysql care rulează într-un Linode folosind următorul fișier docker:
versiunea: '3'
Servicii:
mysql8:
imagine: mysql:8.0.23
comandă: --default-authentication-plugin=parola_native_mysql
container_name: mysql8
cap_add:
- SYS_NICE
mediu inconjurator:
MYSQL_ROOT_PASSWORD: rambo
volume:
- /opt/mysql/data:/var/lib/mysql
porturi:
- 3306:3306
Mă pot conecta prin:
(1) ssh în mașina Linode și apoi folosind: mysql -h 127.0.0.1
(2) conectarea direct de pe laptop la serverul MySQL din serverul Linode: mysql -h 45.79.101.138
Ceea ce am nevoie este să permit accesul intern la portul 3306, adică (1), dar să nu permit (2).
am incercat cu:
iptables -A INTRARE -p tcp --dport 3306 -s 172.0.0.1 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j DROP
Dar încă mă pot conecta de pe laptop și intern.
Dacă am doar o picătură, atunci nu mă pot conecta nici de pe interior, nici de pe laptop.
iptables -A INPUT -p tcp --dport 3306 -j DROP
IPTablele mele arată astfel:
# Generat de iptables-save v1.8.4 pe vineri, 15 octombrie 21:58:42 2021
*filtru
:INPUT ACCEPT [3222:286906]
: FORWARD DROP [0:0]
: ACCEPT IEȘIRE [4089:439672]
:DOCKER - [0:0]
:DOCKER-ISOLATION-STAGE-1 - [0:0]
:DOCKER-ISOLATION-STAGE-2 - [0:0]
:DOCKER-USER - [0:0]
-A INTRARE -s 127.0.0.1/32 -p tcp -m tcp --dport 3306 -j ACCEPT
-A INTRARE -p tcp -m tcp --dport 3306 -j DROP
-UN FORWARD -j DOCKER-UTILIZATOR
-A ÎNAINTE -j DOCKER-ETAPA DE IZOLARE-1
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,STABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A ÎNTÂMPRE -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A FORWARD -o br-bbc39200a6b6 -m conntrack --ctstate RELATED,STABLISHED -j ACCEPT
-A FORWARD -o br-bbc39200a6b6 -j DOCKER
-A ÎNTÂMPRE -i br-bbc39200a6b6 ! -o br-bbc39200a6b6 -j ACCEPT
-A FORWARD -i br-bbc39200a6b6 -o br-bbc39200a6b6 -j ACCEPT
-A FORWARD -o br-595c99b571cb -m conntrack --ctstate RELATED,STABLISHED -j ACCEPT
-A FORWARD -o br-595c99b571cb -j DOCKER
-A ÎNTÂMPRE -i br-595c99b571cb ! -o br-595c99b571cb -j ACCEPT
-A FORWARD -i br-595c99b571cb -o br-595c99b571cb -j ACCEPT
-A DOCKER -d 172.19.0.2/32 ! -i br-595c99b571cb -o br-595c99b571cb -p tcp -m tcp --dport 3306 -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -i br-bbc39200a6b6 ! -o br-bbc39200a6b6 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -i br-595c99b571cb ! -o br-595c99b571cb -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-IZOLARE-ETAPA-1 -j RETURNARE
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -o br-bbc39200a6b6 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -o br-595c99b571cb -j DROP
-A DOCKER-IZOLARE-ETAPA-2 -j RETURNARE
-UN DOCKER-USER -j RETURN
COMMIT
# Finalizat vineri, 15 octombrie 21:58:42 2021
# Generat de iptables-save v1.8.4 pe vineri, 15 octombrie 21:58:42 2021
*nat
:ACCEPTAREA PRE-ROUTARE [1297:65663]
:INPUT ACCEPT [1297:65663]
: ACCEPT IEȘIRE [12:720]
: POSTROUTING ACCEPT [16:940]
:DOCKER - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-O IEȘIRE! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTOUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
-A POSTROUTING -s 172.18.0.0/16 ! -o br-bbc39200a6b6 -j MASQUERADE
-A POSTOUTING -s 172.19.0.0/16 ! -o br-595c99b571cb -j MASQUERADE
-A POSTROUTING -s 172.19.0.2/32 -d 172.19.0.2/32 -p tcp -m tcp --dport 3306 -j MASQUERADE
-A DOCKER -i docker0 -j RETURN
-A DOCKER -i br-bbc39200a6b6 -j RETURN
-A DOCKER -i br-595c99b571cb -j RETURN
-UN DOCKER! -i br-595c99b571cb -p tcp -m tcp --dport 3306 -j DNAT --la-destinație 172.19.0.2:3306
COMMIT
# Finalizat vineri, 15 octombrie 21:58:42 2021
Orice idee este apreciata.