내 홈 네트워크에 NAT를 사용하는 홈 라우터가 있습니다. 내 IP에는 192.168.0.60
작은 웹 애플리케이션을 통해 포트 5000을 수신하는 데비안 10 머신이 있습니다 . 공용 인터넷에서 이 포트에 액세스할 수 있기를 원합니다.
데비안에서는 curl localhost:5000
올바른 응답을 생성합니다.
내 Mac에서는 192.168.0.55
올바른 curl 192.168.0.60:5000
응답이 생성됩니다.
인터넷에 연결하기 위해 라우터를 포트 전달로 구성했습니다 5000 -> 192.168.0.60:5000
.
그러나 curl $PUBLIC_IP:5000
외부 장치(즉, 네트워크가 아닌)에서 사용할 때는 아무 것도 얻지 못합니다.https://www.yougetsignal.com/tools/open-ports/또한 포트가 닫히게 됩니다.
내 첫 번째 추측은 이것이 라우터의 사소한 포트 전달 문제일 것이라는 것입니다. 이를 배제하기 위해 다음을 수행했습니다.
- 내 Mac에서 동일한 앱을 실행하고 5000을 듣습니다.
- 라우터의 포트 전달 규칙을
5000 -> 192.168.0.55:5000
(내 Mac) 으로 변경합니다. - 사용된https://www.yougetsignal.com/tools/open-ports/포트가 열려 있는지 확인
즉, 이는 라우터를 배제하고 범인을 데비안 시스템에 두는 것입니다. 이 시점에서 나는 길을 잃었습니다. 왜 로컬 네트워크에서는 컬링할 수 있지만 인터넷에서는 컬링할 수 없습니까?
iptables의 내용은 다음과 같습니다.
root@debian# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
답변1
문제는 iptables-legacy
와 사이에 사소하지 않은 상호작용이 있다는 것이다 iptables
. 클리어하고 나면 이제 iptables-legacy
출근할 시간이 되었습니다.