將 VoIP 電話直接連線到 Asterisk 伺服器

2019-03-15 10:31:00

在我的 Asterisk 伺服器上正好有張乙太網卡。由於我只用了其中一個,因此我決定將我的 VoIP 電話從本地網路交換機換成連線到 Asterisk 伺服器。

主要的好處是這台執行著未知品質的專有軟體的電話,在我的一般家庭網路中不能用了。最重要的是,它不再能存取網際網路,因此無需手動設定防火牆。

以下是我設定的方式。

私有網路設定

在伺服器上,我在 /etc/network/interfaces 中給第二塊網絡卡分配了一個靜態 IP:

auto eth1iface eth1 inet static    address 192.168.2.2    netmask 255.255.255.0

在 VoIP 電話上,我將靜態 IP 設定成 192.168.2.3,DNS 伺服器設定成 192.168.2.2。我接著將 SIP 註冊 IP 地址設定成 192.168.2.2

DNS 伺服器實際上是一個在 Asterisk 伺服器上執行的 unbound 守護行程。我唯一需要更改的設定是監聽第二張網絡卡,並允許 VoIP 電話進入:

server:    interface: 127.0.0.1    interface: 192.168.2.2    access-control: 0.0.0.0/0 refuse    access-control: 127.0.0.1/32 allow    access-control: 192.168.2.3/32 allow

最後,我在 /etc/network/iptables.up.rules 中開啟了伺服器防火牆上的正確埠:

-A INPUT -s 192.168.2.3/32 -p udp --dport 5060 -j ACCEPT-A INPUT -s 192.168.2.3/32 -p udp --dport 10000:20000 -j ACCEPT

存取管理頁面

現在 VoIP 電話不能在本地網路上用了,因此無法存取其管理頁面。從安全的角度來看,這是一件好事,但它有點不方便。

因此,在通過 ssh 連線到 Asterisk 伺服器之後,我將以下內容放在我的 ~/.ssh/config 中以便通過 http://localhost:8081 存取管理頁面:

Host asterisk    LocalForward 8081 192.168.2.3:80