Tôi có một docker Mysql đang chạy trong Linode bằng cách sử dụng dockerfile sau:
phiên bản: '3'
dịch vụ:
mysql8:
hình ảnh: mysql:8.0.23
lệnh: --default-authentication-plugin=mysql_native_password
container_name: mysql8
cap_add:
- SYS_NICE
môi trường:
MYSQL_ROOT_PASSWORD: rambo
khối lượng:
- /opt/mysql/data:/var/lib/mysql
cổng:
- 3306:3306
Tôi có thể kết nối bằng cách:
(1) ssh vào máy Linode và sau đó sử dụng: mysql -h 127.0.0.1
(2) kết nối trực tiếp từ Máy tính xách tay của tôi với máy chủ MySQL trong máy chủ Linode: mysql -h 45.79.101.138
Điều tôi cần là cho phép truy cập nội bộ vào cổng 3306 nghĩa là (1) nhưng không cho phép (2).
Tôi đã thử với:
iptables -A INPUT -p tcp --dport 3306 -s 172.0.0.1 -j CHẤP NHẬN
iptables -A INPUT -p tcp --dport 3306 -j DROP
Nhưng tôi vẫn có thể kết nối từ máy tính xách tay của mình và nội bộ.
Nếu tôi vừa bị rơi thì tôi không thể kết nối từ nội bộ hoặc máy tính xách tay của mình.
iptables -A INPUT -p tcp --dport 3306 -j DROP
IPTables của tôi trông như thế này:
# Được tạo bởi iptables-save v1.8.4 vào Thứ Sáu, ngày 15 tháng 10 21:58:42 năm 2021
*lọc
:CHẤP NHẬN ĐẦU VÀO [3222:286906]
:GIẢM VỀ PHÍA TRƯỚC [0:0]
:CHẤP NHẬN ĐẦU RA [4089:439672]
:DOCKER - [0:0]
:DOCKER-ISOLATION-STAGE-1 - [0:0]
:DOCKER-ISOLATION-STAGE-2 - [0:0]
:DOCKER-USER - [0:0]
-A INPUT -s 127.0.0.1/32 -p tcp -m tcp --dport 3306 -j CHẤP NHẬN
-A INPUT -p tcp -m tcp --dport 3306 -j DROP
-A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -o docker0 -m conntrack --ctstate LIÊN QUAN, THÀNH LẬP -j CHẤP NHẬN
-A FORWARD -o docker0 -j DOCKER
-A VỀ PHÍA TRƯỚC -i docker0 ! -o docker0 -j CHẤP NHẬN
-A FORWARD -i docker0 -o docker0 -j CHẤP NHẬN
-A FORWARD -o br-bbc39200a6b6 -m conntrack --ctstate LIÊN QUAN, THÀNH LẬP -j CHẤP NHẬN
-A PHÍA TRƯỚC -o br-bbc39200a6b6 -j DOCKER
-A VỀ PHÍA TRƯỚC -i br-bbc39200a6b6 ! -o br-bbc39200a6b6 -j CHẤP NHẬN
-A VỀ PHÍA TRƯỚC -i br-bbc39200a6b6 -o br-bbc39200a6b6 -j CHẤP NHẬN
-A FORWARD -o br-595c99b571cb -m conntrack --ctstate LIÊN QUAN, THÀNH LẬP -j CHẤP NHẬN
-A PHÍA TRƯỚC -o br-595c99b571cb -j DOCKER
-A VỀ PHÍA TRƯỚC -i br-595c99b571cb ! -o br-595c99b571cb -j CHẤP NHẬN
-A PHÍA TRƯỚC -i br-595c99b571cb -o br-595c99b571cb -j CHẤP NHẬN
-A DOCKER -d 172.19.0.2/32 ! -i br-595c99b571cb -o br-595c99b571cb -p tcp -m tcp --dport 3306 -j CHẤP NHẬN
-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-ISOLATION-STAGE-1 -j RETURN
-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-ISOLATION-STAGE-2 -j RETURN
-A DOCKER-USER -j RETURN
LÀM
# Hoàn thành vào Thứ Sáu 15 tháng 10 21:58:42 2021
# Được tạo bởi iptables-save v1.8.4 vào Thứ Sáu, ngày 15 tháng 10 21:58:42 năm 2021
* tự nhiên
:CHẤP NHẬN TRƯỚC [1297:65663]
:CHẤP NHẬN ĐẦU VÀO [1297:65663]
:CHẤP NHẬN ĐẦU RA [12:720]
:CHẤP NHẬN SAU ĐÓ [16:940]
:DOCKER - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-ĐẦU RA! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MẶT MẠO
-A POSTROUTING -s 172.18.0.0/16 ! -o br-bbc39200a6b6 -j MẶT MẠO
-A POSTROUTING -s 172.19.0.0/16 ! -o br-595c99b571cb -j MẶT MẠO
-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 TRẢ LẠI
-A DOCKER -i br-bbc39200a6b6 -j TRẢ LẠI
-A DOCKER -i br-595c99b571cb -j TRẢ LẠI
-NGƯỜI ĐẶT CHỖ! -i br-595c99b571cb -p tcp -m tcp --dport 3306 -j DNAT --to-destination 172.19.0.2:3306
LÀM
# Hoàn thành vào Thứ Sáu 15 tháng 10 21:58:42 2021
Bất kỳ ý tưởng được đánh giá cao.