在我的 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