openvpn 클라이언트를 내부 LAN에 연결하여 http 서버에 액세스하려고 합니다. pfSense와 내 http 서버가 내 홈 proxmox 노드의 가상 머신에서 실행되고 있습니다. 둘 다 간단한 Linux 브리지를 통해 연결되며 pfsense는 dhcp 서버 역할을 합니다.
pfSense VM에서는 전 세계 클라이언트가 연결할 수 있도록 openvpn도 구성했습니다. (포트포워딩 등등...)
네트워크 pfSense LAN: 10.44.2.0/24(pfSense 10.44.2.254 gw) 네트워크 OpenVPN: 10.44.3.0/24(서버 10.44.3.1은 클라이언트 간을 허용하지 않음)
모든 라우팅이 잘 작동하고 있습니다. LAN에서 VPN으로 또는 VPN에서 LAN으로 핑을 보낼 수 있으며 둘 다 잘 작동합니다. TCP만 작동하지 않습니다.
10.44.3.2(VPN)에서 [10.44.2.11(LAN)까지] https 서버에 접속하려고 하면 서버의 연결 상태는 "SYN_RECV"이고 클라이언트에는 "SYN_SENT"가 표시됩니다.
내가 알 수 있는 바에 따르면 두 번째 단계(SYN, ACK)가 실패한 것 같습니다. 전체 pfSense 방화벽을 완전히 비활성화했지만 작동하지 않습니다.
그런 다음 네트워크 트래픽을 기록합니다.
섬기는 사람:
14:18:57.571985 IP 10.44.3.2.42956 > 10.44.2.11.http: Flags [S], seq 3192289577, win 29200, options [mss 1308,sackOK,TS val 3098827 ecr 0,nop,wscale 7], length 0
14:18:57.572006 IP 10.44.2.11.http > 10.44.3.2.42956: Flags [S.], seq 2421464031, ack 3192289578, win 28960, options [mss 1460,sackOK,TS val 68259688 ecr 3098827,nop,wscale 7], length 0
14:18:57.825934 IP 10.44.3.2.42958 > 10.44.2.11.http: Flags [S], seq 2213274578, win 29200, options [mss 1308,sackOK,TS val 3098889 ecr 0,nop,wscale 7], length 0
14:18:57.825952 IP 10.44.2.11.http > 10.44.3.2.42958: Flags [S.], seq 595037825, ack 2213274579, win 28960, options [mss 1460,sackOK,TS val 68259752 ecr 3098889,nop,wscale 7], length 0
. . . . .
고객:
15:18:57.567020 IP 10.44.3.2.42956 > 10.44.2.11.http: Flags [S], seq 3192289577, win 29200, options [mss 1460,sackOK,TS val 3098827 ecr 0,nop,wscale 7], length 0
15:18:57.570249 IP 10.44.2.11.http > 10.44.3.2.42956: Flags [S.], seq 2421464031, ack 3192289578, win 28960, options [mss 1308,sackOK,TS val 68259688 ecr 3098827,nop,wscale 7], length 0
15:18:57.817649 IP 10.44.3.2.42958 > 10.44.2.11.http: Flags [S], seq 2213274578, win 29200, options [mss 1460,sackOK,TS val 3098889 ecr 0,nop,wscale 7], length 0
15:18:57.835985 IP 10.44.2.11.http > 10.44.3.2.42958: Flags [S.], seq 595037825, ack 2213274579, win 28960, options [mss 1308,sackOK,TS val 68259752 ecr 3098889,nop,wscale 7], length 0
15:18:58.567001 IP 10.44.3.2.42956 > 10.44.2.11.http: Flags [S], seq 3192289577, win 29200, options [mss 1460,sackOK,TS val 3099077 ecr 0,nop,wscale 7], length 0
15:18:58.568639 IP 10.44.2.11.http > 10.44.3.2.42956: Flags [S.], seq 2421464031, ack 3192289578, win 28960, options [mss 1308,sackOK,TS val 68259938 ecr 3098827,nop,wscale 7], length 0
15:18:58.570778 IP 10.44.2.11.http > 10.44.3.2.42956: Flags [S.], seq 2421464031, ack 3192289578, win 28960, options [mss 1308,sackOK,TS val 68259938 ecr 3098827,nop,wscale 7], length 0
15:18:58.815006 IP 10.44.3.2.42958 > 10.44.2.11.http: Flags [S], seq 2213274578, win 29200, options [mss 1460,sackOK,TS val 3099139 ecr 0,nop,wscale 7], length 0
. . . .
tcp의 첫 번째 단계는 제대로 작동하는 것 같습니다. 그 후 SYN과 ACK를 보냈으나 ACK 패킷을 찾을 수 없었습니다.
내가 말했듯이 핑이 잘 작동하므로 라우팅은 괜찮습니다.
어떤 아이디어가 있나요? !
답변1
pfsense의 네트워크 인터페이스를 VIRTIO에서 E1000으로 변경하여 문제를 해결했습니다.
Proxmox의 VIRTIO 드라이버로 인해 일부 패키지가 누락되는 것 같습니다.
답변2
이 문제는 pfSense와 관련이 없습니다.
실제 이유는 Virtio 드라이버의 하드웨어 오프로딩이 BSD에서 지원되지 않거나 손상된 것 같습니다. E1000으로 다시 전환할 필요가 없습니다.
가다 시스템->고급->네트워크 태그 설정:하드웨어 체크섬 오프로드 비활성화
설정을 저장한 후 즉시 통신이 시작됩니다. 재부팅도 필요하지 않습니다.