我在我的服务器上通过Docker安装了一个jenkins并分配到一个特定的域(jenkins.mydomain.com),它完全正常。但是,如果我使用服务端口浏览我的域,我也可以访问jenkins(以及docker中的所有其他服务),例如:mydomain.com:8181
我已经尝试了一些东西来阻止外部端口并使其只能通过域访问,但没有运气。
首先,我试图阻止eth0接口的端口:
iptables -A INPUT -i eth0 -p tcp --destination-port 8181 -j DROP
但它没有用,因为当我试图从域名到达jenkins时,我得到了错误503。 还尝试阻止除docker的ip之外的每个传入请求的端口。它也没有工作 那么如何从外部无法访问端口但Docker可以访问?
iptables -L -n --line-numbers
Chain INPUT (policy ACCEPT)
num target prot opt source destination
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 DOCKER-ISOLATION all -- 0.0.0.0/0 0.0.0.0/0
2 DOCKER all -- 0.0.0.0/0 0.0.0.0/0
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
4 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
5 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
Chain DOCKER (1 references)
num target prot opt source destination
1 ACCEPT tcp -- 0.0.0.0/0 172.17.0.2 tcp dpt:3000
2 ACCEPT tcp -- 0.0.0.0/0 172.17.0.2 tcp dpt:22
3 ACCEPT tcp -- 0.0.0.0/0 172.17.0.3 tcp dpt:8081
4 ACCEPT tcp -- 0.0.0.0/0 172.17.0.4 tcp dpt:50000
5 ACCEPT tcp -- 0.0.0.0/0 172.17.0.4 tcp dpt:8080
Chain DOCKER-ISOLATION (1 references)
num target prot opt source destination
1 RETURN all -- 0.0.0.0/0 0.0.0.0/0