패킷이 핫스팟을 통해 들어올 때 Linux가 애플리케이션에 데이터를 전달하지 않는 이유는 무엇입니까?

패킷이 핫스팟을 통해 들어올 때 Linux가 애플리케이션에 데이터를 전달하지 않는 이유는 무엇입니까?

내 목표는 MITM 프록시로 트래픽을 가로채는 것입니다. 이를 위해 Wi-Fi 핫스팟을 호스팅하도록 노트북을 구성하고, 스마트폰을 연결하고, 프록시를 시작한 다음, 이 Wi-Fi 네트워크에서 노트북을 프록시로 사용하도록 스마트폰을 구성했습니다.

호스트 IP는 10.42.0.1이고 클라이언트는 입니다 10.42.0.2. 프록시는 모든 인터페이스인 포트 8080에서 수신 대기합니다. 그것은 올바르게 표시되며 localhost에서 netstat할 수 있습니다 . netcatAndroid 휴대폰은 10.42.0.1포트 8080을 통해 프록시되도록 구성됩니다.

전화에서 ping을 보낼 수 있습니다 10.42.0.1. Wireshark에서는 에코 요청이 들어오고 응답이 나가는 것을 볼 수 있습니다.

그러나 전화기가 TCP 또는 UDP 패킷을 보내면 시스템이 응답하지 않습니다. UDP에서 netcat을 사용하여 핫스팟에서 수신 대기하고 전화기에서 UDP 데이터를 보낼 때 데이터가 netcat으로 전달되지 않습니다. Wireshark에 데이터가 포함된 패킷이 들어오는 것을 볼 수 있지만 터미널은 비어 있습니다. TCP에서 수신할 때 Wireshark에서 전화에서 들어오는 SYN 패킷을 볼 수 있지만 결코 승인되지 않습니다(SYN+ACK 응답 없음).

핫스팟( 10.42.0.1)에는 분명히 ARP가 있고 경로가 돌아가거나 ICMP 에코 응답이 나가지 않습니다. 호스트 방화벽이 설치되어 있지 않습니다. 재부팅 후에도 문제가 지속됩니다.

무엇이 문제일까요?

답변1

질문을 작성하는 동안 방화벽이 설치되어 있지 않기 때문에 방화벽이 될 수 없다는 것을 알았고 재부팅 후에도 지속되지 않기 때문에 iptables가 될 수 없다는 것을 알았지만 실제로 확인하지 않았다는 것을 깨달았습니다. iptables 규칙이 설정되지 않았습니다.

# iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     udp  --  anywhere             anywhere             udp dpt:bootps
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:bootps
ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:domain
DROP       all  --  anywhere             anywhere             state INVALID
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     udp  --  anywhere             anywhere             udp dpt:isakmp
ACCEPT     esp  --  anywhere             anywhere
ACCEPT     ah   --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:8528

아마도 무한한 지혜를 지닌 NetworkManager가 우리를 위해 몇 가지 규칙을 추가하기로 결정한 것으로 밝혀졌으며 예기치 않게 방화벽을 제공하게 되어 기쁘게 생각합니다.

해결 방법은 일부 규칙을 종료하고 기본 정책을 재설정하는 것입니다.

# iptables -L --line-numbers
Chain INPUT (policy DROP)
num  target     prot opt source               destination
1    ACCEPT     udp  --  anywhere             anywhere             udp dpt:bootps
2    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:bootps
3    ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain
4    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:domain
5    DROP       all  --  anywhere             anywhere             state INVALID
# iptables -D INPUT 5
# iptables --policy INPUT ACCEPT

NetworkManager 문서나 소스 코드에서도 이에 대한 참조를 찾을 수 없습니다. 이 포트 8528이 기본적으로 허용되는 것 같고(어디에도 등록되지 않았거나 참조되지 않음) iptables를 호출하는 관련 코드를 빨리 찾을 수 없거나 방화벽 차단을 위한 관련 설정을 찾을 수 없다는 것이 무엇인지 모르겠습니다. 연결. 아마도 NetworkManager는 나중에 이것을 설치하는 다른 소프트웨어를 호출합니까?

관련 정보