OpenVPN 서버(Ubuntu 20.04 x64)를 통해 로컬 서버로 포트 전달

OpenVPN 서버(Ubuntu 20.04 x64)를 통해 로컬 서버로 포트 전달

표적

안녕하세요, 원격 VPS를 통해 로컬 홈 서버로 포트 전달 문제를 해결하는 데 큰 어려움을 겪고 있습니다. 내가 하고 싶은 것은 나와 내 친구들을 위해 Counter Strike GO 서버를 호스팅하는 것입니다. 하지만 나 자신을 포함한 모든 사람이 텍사스 달라스에 있는 VPS를 통해 연결하도록 하는 것입니다. 그러면 이론적으로 OpenVPN을 통해 내 홈 서버로 요청이 전달됩니다. 내가 동부 해안에 있는 친구들보다 어떤 핑 이점을 갖고 있나요?

포트 및 IP

27005 UDP 아웃바운드

27015 TCP 및 UDP 인바운드 및 아웃바운드주요 항구

27020 UDP 인바운드 및 아웃바운드

51840 UDP 아웃바운드

WAN VPS 45.58.xx.xx

VPN 게이트웨이 10.8.0.1

VPN 클라이언트 10.8.0.2

질문

이제 이것은 제가 처음에 염두에 두었던 간단한 프로젝트여야 할 것 같습니다. 그러나 온라인에서 다른 포럼 게시물을 검색하고 많은 것을 시도한 후에 빈손으로 나왔습니다. 내 목표는 iptables목표 달성에 성공하지 못한 채 실행해 본 다양한 명령의 조합을 사용하는 것입니다 .

sysctl -w net.ipv4.ip_forward=1

iptables -I FORWARD 1 -d 10.8.0.2 -p tcp --dport 27015 -j ACCEPT
iptables -I FORWARD 1 -d 10.8.0.2 -p udp --dport 27015 -j ACCEPT
iptables -I FORWARD 1 -d 10.8.0.2 -p udp --dport 27020 -j ACCEPT

iptables -t nat -A POSTROUTING -m conntrack --ctstate DNAT -d 10.8.0.2 -p tcp --dport 27015 -j SNAT --to-source 10.8.0.1
iptables -t nat -A POSTROUTING -m conntrack --ctstate DNAT -d 10.8.0.2 -p udp --dport 27015 -j SNAT --to-source 10.8.0.1
iptables -t nat -A POSTROUTING -m conntrack --ctstate DNAT -d 10.8.0.2 -p udp --dport 27020 -j SNAT --to-source 10.8.0.1
iptables -t nat -A POSTROUTING -m conntrack --ctstate DNAT -d 10.8.0.2 -p udp --dport 27005 -j SNAT --to-source 10.8.0.1
iptables -t nat -A POSTROUTING -m conntrack --ctstate DNAT -d 10.8.0.2 -p udp --dport 51840 -j SNAT --to-source 10.8.0.1
iptables -t nat -A PREROUTING -d 45.58.xx.xx -p udp --dport 27005 -j DNAT --to-dest 10.8.0.2:27005
iptables -t nat -A PREROUTING -d 45.58.xx.xx -p tcp --dport 27015 -j DNAT --to-dest 10.8.0.2:27015
iptables -t nat -A PREROUTING -d 45.58.xx.xx -p udp --dport 27015 -j DNAT --to-dest 10.8.0.2:27015
iptables -t nat -A PREROUTING -d 45.58.xx.xx -p udp --dport 27020 -j DNAT --to-dest 10.8.0.2:27020

iptables -t nat -A POSTROUTING -d 10.8.0.2 -p tcp --dport 27015 -j SNAT --to-source 10.8.0.1
iptables -t nat -A POSTROUTING -d 10.8.0.2 -p udp --dport 27015 -j SNAT --to-source 10.8.0.1
iptables -t nat -A POSTROUTING -d 10.8.0.2 -p udp --dport 27020 -j SNAT --to-source 10.8.0.1
iptables -t nat -A POSTROUTING -d 10.8.0.2 -p udp --dport 27005 -j SNAT --to-source 10.8.0.1
iptables -t nat -A POSTROUTING -d 10.8.0.2 -p udp --dport 51840 -j SNAT --to-source 10.8.0.1

이제 이러한 iptable 항목 조합은 작동하지 않습니다. 서버를 로컬로 실행할 때 이러한 포트에서 실행되는 서비스를 볼 수 없거나 CSGO 클라이언트를 통해 서버에 연결할 수 없기 때문입니다. 또한 명령 세트 사이에서 iptables를 지웠고 이 모든 명령은 sudo로 실행되었으며 iptables-saveafterword가 실행되었습니다.

추가 정보

이것은 명령을 실행할 때 ip a콘솔에서 받은 덤프입니다 .

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: venet0: <BROADCAST,POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default
    link/void
    inet 127.0.0.1/32 scope host venet0
       valid_lft forever preferred_lft forever
    inet 45.58.xx.xx/32 brd 45.58.xx.xx scope global venet0:0
       valid_lft forever preferred_lft forever
    inet6 2602:ffc5:1f::xx:xxxx/128 scope global
       valid_lft forever preferred_lft forever
    inet6 ::2/128 scope global
       valid_lft forever preferred_lft forever
3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 500
    link/none
    inet 10.8.0.1/24 brd 10.8.0.255 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fddd:1194:1194:1194::1/64 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::2105:549d:51f6:9a16/64 scope link stable-privacy
       valid_lft forever preferred_lft forever

위의 덤프에 대해 내가 알아차린 한 가지는 그렇지 않다는 것입니다 . eth0그러나 내 WAN은 통과되어 있으므로 venet0이것이 차이를 가져올지 확신할 수 없습니다.

이 말도 안되는 포트 전달 외에도 VPN에 연결할 수 있으며 연결하면 로컬 서버에 인터넷이 연결됩니다.

감사합니다!

답변1

해결책

종종 간단한 솔루션이 필요합니다. 마지막 질문은 Windows 방화벽에 관한 것입니다. 어떤 이유로 내 CSGO 서버가 방화벽을 통해 통신하는 것을 허용하지 않습니다.

내가 한 일은 내 서버 exe의 방화벽을 여는 것뿐이었습니다. iptables내가 사용한 명령은 다음과 같았습니다.리눅스 문제:

iptables -t nat -A POSTROUTING --out-interface tun0 -j MASQUERADE
iptables -A FORWARD --in-interface venet0 -j ACCEPT

iptables -t nat -A PREROUTING -p tcp -i venet0 -m tcp --dport 27015 -j DNAT --to-destination 10.8.0.2:27015

말 그대로 그런 의미입니다. 제 글을 읽어주셔서 감사합니다. 앞으로 다른 사람들에게도 도움이 되기를 바랍니다.

관련 정보