在我的 Asterisk[1] 伺服器上正好有張乙太網卡。由於我只用了其中一個,因此我決定將我的 VoIP 電話從本地網路交換機換成連線到 Asterisk 伺服器。
主要的好處是這臺執行著未知質量的專有軟體的電話,在我的一般家庭網路中不能用了。最重要的是,它不再能訪問網際網路,因此無需手動配置防火牆。
以下是我配置的方式。
私有網路配置
在伺服器上,我在 /etc/network/interfaces
中給第二塊網絡卡分配了一個靜態 IP:
-
auto eth1
-
iface 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 守護行程[2]。我唯一需要更改的配置是監聽第二張網絡卡,並允許 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