![들어오는 패킷이 소켓으로 전달되지 않음](https://linux55.com/image/94006/%EB%93%A4%EC%96%B4%EC%98%A4%EB%8A%94%20%ED%8C%A8%ED%82%B7%EC%9D%B4%20%EC%86%8C%EC%BC%93%EC%9C%BC%EB%A1%9C%20%EC%A0%84%EB%8B%AC%EB%90%98%EC%A7%80%20%EC%95%8A%EC%9D%8C.png)
TCP 소켓을 통해 VPN 서버에 연결하는 VPN 애플리케이션이 있습니다. setsockopt
TCP 소켓 패킷을 및 로 표시 했습니다 SO_MARK
. ping 10.0.0.1
VPN 게이트웨이를 성공적으로 ping 할 수 있습니다 .
그런 다음 VPN을 통해 모든 트래픽을 라우팅해 보았습니다. 다른 테이블을 생성하고 ip route add default via 10.0.0.1 dev tun0 table 200
기본 게이트웨이를 사용하고 추가합니다 ip rule add lookup 200
.
그러나 VPN 자체 패킷이 VPN을 통과하기 시작합니다. VPN을 직접 실행하는데 ip rule add fwmark 1234 lookup main
내 패킷이 VPN에서 제외됩니다. tcpdump를 통해 이를 볼 수 있으며 eth0
VPN 서버가 응답합니다. 그러나 들어오는 패킷은 TCP 소켓으로 전달되지 않습니다. 커널이 그것들을 버리는 것 같습니다. 왜?