![토렌트 트래픽을 위해 OpenVPN 서버에서 특정 포트를 열어야 합니까?](https://rvso.com/image/1465809/%ED%86%A0%EB%A0%8C%ED%8A%B8%20%ED%8A%B8%EB%9E%98%ED%94%BD%EC%9D%84%20%EC%9C%84%ED%95%B4%20OpenVPN%20%EC%84%9C%EB%B2%84%EC%97%90%EC%84%9C%20%ED%8A%B9%EC%A0%95%20%ED%8F%AC%ED%8A%B8%EB%A5%BC%20%EC%97%B4%EC%96%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
Mac(OSX 10.10)의 Tunnelblick에서 포트 1194의 openvpn 서버에 연결하는 경우 전송에 사용되는 포트(예: 66887)가 수신 연결에 대해 열려 있는지 어떻게 확인할 수 있습니까?
현재 설정:
Wi-Fi 핫스팟에 연결됨(내 통제가 불가능하며 라우터 설정에 액세스할 수 없음) OpenVPN 서버에 연결됨(구성에 대한 모든 권한이 있음)
전송이 '작동'하지만 속도가 느리고 전송 네트워크 기본 설정에서 포트가 닫힌 것으로 표시됩니다. openvpn VPN 연결은 모든 표준 http 트래픽에 대해 정상적으로 작동합니다.
OpenVPN이 원격 Ubuntu 서버에서 실행되고 있습니다. ufw를 사용하여 위의 포트를 열려고 시도했지만 아무런 효과가 없었으며 더 깊은 네트워크 구성이 필요한 것으로 의심됩니다.
openvpn 버전은 OpenVPN 2.3.2 x86_64입니다.
이 시나리오에서 포트 66887을 전달할 수 있습니까? 아니면 이 작업을 수행하려면 로컬 LAN 라우터에 액세스해야 합니까?
기본 설정 plist 파일을 통한 전송을 위해 바인드 주소(BindAddressIPv4)를 변경하려고 시도했지만 이 작업이 잘못되었거나 아무런 차이가 없었습니다.
답변1
놀랍게도 아무도 눈치채지 못했지만 66887은 유효한 포트 번호가 아닙니다.
포트 번호는 부호 없는 16비트 정수이므로 65535입니다.
포트의 유효한 범위는 0-65535입니다.
잘못된 포트 66887을 지정하기 때문에 대부분의 운영 체제에서는 해당 포트를 1351로 자릅니다.
[root@f ~]# tcpdump -qnn host 8.8.8.8 & telnet 8.8.8.8 66887
[1] 4054
Trying 8.8.8.8...
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
15:30:56.175482 IP 10.0.0.42.60280 > 8.8.8.8.1351: tcp 0
또는 C에서:
[root@f ~]# cat > 16.c << EOF
> #include <stdio.h>
> #include <stdint.h>
> int main(void) {
> uint16_t port=66887;
> printf("%d\n",port);
> return 0;
> }
> EOF
[root@f ~]# gcc -o 16 16.c
16.c: In function ‘main’:
16.c:4: warning: large integer implicitly truncated to unsigned type
[root@f ~]# ./16
1351
답변2
openvpn 서버에서 포트를 전달해야 합니다.
ufw 명령은 모르지만 iptables를 사용하면 명령은 다음과 같습니다(VPN에 연결되었을 때 컴퓨터의 IP는 10.8.0.6, 전달할 포트는 66887).
iptables -t nat -A PREROUTING -p tcp --dport 66887 -j DNAT --to 10.8.0.6:66887
iptables -t nat -A PREROUTING -p udp --dport 66887 -j DNAT --to 10.8.0.6:66887