Docker:拒绝外部访问端口

问题描述 投票:0回答:2

我托管了两个带有以下 docker 文件的容器

docker run --name openvpn \
-v /root/easyrsa_master:/etc/openvpn/easyrsa \
-v /root/ccd_master:/etc/openvpn/ccd \
-e OVPN_SERVER_NET='192.168.100.0' \
-e OVPN_SERVER_MASK='255.255.255.0' \
-p 7777:1194 \
-p 8080:8080 \
--net test  \
--cap-add=NET_ADMIN \
 openvpn:local

docker run --name ovpn_admin \
-v /root/easyrsa_master:/mnt/easyrsa \
-v /root/ccd_master:/mnt/ccd \
-e OVPN_CCD="True" \
-e OVPN_CCD_PATH="/mnt/ccd" \
-e EASYRSA_PATH="/mnt/easyrsa" \
-e OVPN_DEBUG="True" \
-e OVPN_VERBOSE="True" \
-e OVPN_NETWORK="192.168.100.0/24" \
-e OVPN_SERVER="<external_address>:7777:tcp" \
-e OVPN_INDEX_PATH="/mnt/easyrsa/pki/index.txt" \
--network="container:openvpn" \
 ovpn-admin:local

托管在云端。

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether fa:16:3e:b5:a3:90 brd ff:ff:ff:ff:ff:ff
    inet 192.168.250.5/24 brd 192.168.250.255 scope global dynamic eth0
       valid_lft 58754sec preferred_lft 58754sec
    inet6 fe80::f816:3eff:feb5:a390/64 scope link 
       valid_lft forever preferred_lft forever

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.250.1   0.0.0.0         UG    0      0        0 eth0
169.254.169.254 192.168.250.1   255.255.255.255 UGH   0      0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
172.18.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-9919e04681fb
172.19.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-c3e87ce3f05f
172.20.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-60aff89f36e9
172.21.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-eee0ae05a7a6
172.22.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-5d087fed339d
192.168.250.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0

主机可以从外部访问互联网。 所以映射了2个端口。 我需要只能通过网络 192.168.250.0/24 访问端口 8080 但是当我运行它时,它也可以从外部访问。我该如何处理?

127.0.0.1:8080:8080
不起作用。

docker docker-networking
2个回答
0
投票

解决方案1 (安塞布尔)

iptables: chain=DOCKER-USER in_interface=eth0 protocol=tcp destination_port=8080 source=!192.168.250.0/24 jump=DROP action=insert

解决方案2

  • 在同一个 docker 网络中创建反向代理。
  • 删除
    -p 8080:8080
  • proxy_pass http://<host port>:8080;

0
投票

只需运行你的docker:

sudo docker run --rm --detach -p 127.0.0.1:9000:9000

只有内部本地主机访问,而不是整个互联网。

© www.soinside.com 2019 - 2024. All rights reserved.