Asterisk의 OpenVPN 라우터로 Raspberry PI 사용


3

그래서, 나는 꽤 오랫동안 이것으로 머리를 두드리고 있습니다.

다음과 같은 구성이 있습니다.

  • OpenVPN 서버, IP 1.2.3.1
  • OpenVPN 서버에 연결된 별표 서버, IP 1.2.3.3
  • RaVberry PI, 로컬 인터페이스 192.168.0.17, OpenVPN IP 1.2.3.6에 연결
  • Raspberry PI와 동일한 로컬 네트워크의 IP 전화, 로컬 IP 192.168.0.81

네트워크는 다음과 같이 구성됩니다.

  • 라즈베리의 로컬 연결은 eth0입니다
  • 라즈베리는 IP 192.168.0.91의 추가 가상 인터페이스 eth0 : 1을 갖습니다.
  • 라즈베리의 OpenVPN 연결은 tun0입니다
  • 전화의 로컬 IP는 192.168.0.81이며 게이트웨이는 192.168.0.91 (라즈베리)로 설정되어 있습니다.

라즈베리에서 iptables는 다음과 같습니다.

#Empty all routing tables
sudo iptables -t nat -F
sudo iptables -F

#Masquerade all traffic leaving tun0 as if coming from 1.2.3.6
sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

#redirect all traffic coming from eth0:1 to tun0
sudo iptables -A FORWARD -i eth0:1 -o tun0 -j ACCEPT

#redirect all traffic coming from tun0 to eth0:1
sudo iptables -A FORWARD -i tun0 -o eth0:1 -j ACCEPT

#Modify all packets coming to tun0 to forward then to the IP telephone
sudo iptables -t nat -A PREROUTING -i tun0 -j DNAT --to-destination 192.168.0.81

따라서 전화를 걸고 전화를받을 수 있습니다 (VPN 서버에 직접 연결되어 있고 테스트를 위해 Zoiper를 사용하는 다른 랩톱이 있습니다). 전화로 전화를 걸 수 있고 전화에서 오디오로 전화에서 랩톱으로 작동하지만 전화에는 들어오는 오디오가 없습니다.

내가 뭘 잘못하고 있죠?

최신 정보

나는 또한 다음을 시도했다.

  1. 전화기에는 192.168.200.1 / 255.255.255.0 설정이 있으며 192.168.200.2 / 255.255.255.0이있는 라즈베리에 연결되어 있습니다 (라즈베리 ip는 전화의 관문입니다)

  2. tun ip 10.34.87.2가 포함 된 Raspberry pi (wlan0을 사용하여 wifi에 연결 한 다음 VPN에 연결)

  3. IPTables sudo iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT sudo iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT

  4. VPN 서버에서 (10.34.87.1)

route add 192.168.200.0/24 10.34.87.2

참고 : iptables는 가장 무도회가 없습니다. 이제 트래픽을 192.168.200.1-> 10.34.87.1 (vpn 서버)에서 라우팅 할 수 있었지만 다른 방법은 아닙니다.

어떤 아이디어?


나는 당신이 말하는 것과 정확히 작동하지 않는 것을 정확히 이해하지 못합니다. 랩톱에서 전화기로 전화를 걸 수 있으면 네트워크 라우팅에 문제가없는 것입니다. 통화가 제대로 설정되었지만 오디오가없는 경우 통화 설정 패킷을 통과 할 수 있지만 메시지가 아닌 필터링 설정이있을 수 있습니다 (VOIP 소프트웨어가 다른 포트 번호로 전환합니까?) 또는 랩톱의 오디오 구성에 문제가있을 수 있습니다.
— JRI

TCP 덤프는 들어오는 RTP 트래픽이 전혀 없다는 것을 보여 주므로 오류를 찾았지만 어떻게 해결할 수 있는지 잘 모르겠습니다. RTP 시작 자체에는 보낸 사람의 IP 주소 (패킷 헤더가 아니라 본문)가 포함되어 있으므로 패킷이 라즈베리를 통해 전화에서 서버로 전송 될 때 라즈베리는 마치 라즈베리에서 온 것처럼 다시 씁니다. 패킷 내부에는 원래 IP가 남아 있습니다. 이제 netsed패킷을 즉시 다시 쓸 수 있는지 테스트 하고 있습니다.
— Damir Kasipovic

구성된 IP 주소에 사용한 서브넷 마스크를 추가 할 수 있습니까?
— Tim_Stewart

@ Tim_Stewart 255.255.255.0
— Damir Kasipovic

답변:


-1

가장 무도회는 필수 요건입니까? 그렇지 않은 경우, 전화가 Pi를 기본 게이트웨이로 사용하므로 추가 노력없이 서버에 연결할 수 있습니다. 서버가 전화에 다시 연결할 수 있는지 확인하고 필요한 경우 서버에서 192.168.0.0/에 대한 경로를 추가하십시오. Pi를 통해 24 (필요에 따라 조정)


예. 그러나 VPN에 동적 IP가 있고 사전에 알려지지 않은 PI를 사용하여 여러 위치를 가질 것이라는 점을 감안할 때 서버에서 경로를 만드는 방법을 잘 모르겠습니다. 또한 이것은 실제로 해결 방법으로 들리지만 구현하려는 솔루션은 아닙니다.
— Damir Kasipovic

해결책이 아니라 문제에 대한 해결책입니다. 원하는 것을 이해하면 파이를 구성하고 어딘가에 떨어 뜨려 작동합니까? pi가 이미 기본 게이트웨이 인 경우 서버의 경로에 대해서는 기본적으로 작동합니다. 그렇지 않은 경우 : ip route add 192.168.0.0/24 1.2.3.1을 통해 트릭을 수행해야합니다 (네트워크 주소 / 마스크를 필요에 맞게 조정하십시오). 이쪽을 봐 걸릴 : voip-info.org/wiki/view/NAT+and+VOIP
— 라우 프 M. Bencheraiet에게

그래서 기본적으로 제안하는 것은 라즈베리를 VPN 서버에 연결하고 IP ABCD를 얻은 다음 서버에 해당 경로를 추가하여 전화 IP (라즈베리에 연결됨)를 입력 한 다음 라즈베리에서 가장 무도회를 비활성화하는 것입니다. 그렇게하면 rtp 패킷을 수정할 필요가 없으며 연결된 장치는 원래 IP를 사용합니다. 이것의 단점은 옳다면 각 라즈베리가 서로 다른 로컬 IP 범위를 가져야하므로 서버에 여러 경로를 추가 할 수 있다는 것입니다.
— 다 미르 카 시포 비치

간단히 말해서, 그렇습니다! 단점은 당신이 언급 한대로입니다.
— Raouf M. Bencheraiet

가능하면 편집을 참조하십시오
— 미르 Kasipovic
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.