GNU/Linux >> Linux の 問題 >  >> Debian

Debian10/11上のKannelSMSゲートウェイ

カネル:

Kannelは、GSMネットワーク用のオープンソースのWAPおよびSMSゲートウェイです。さらに、Kannelは、シリアルまたはUSBGSMモデムを使用してSMSを送受信できます。 HTTP APIを介してアクセスでき、バルクSMS、OTPなどの送信に使用できます。

したがって、Kannelにはボックスと呼ばれる3つの主要なプログラムがあります。 Bearerbox smsbox wapbox

  • Bearerboxは電話に接続します。電話からのWAPおよびSMSメッセージを受け入れ、それらを他のボックスに送信します。
  • SMSboxはSMSゲートウェイ機能を処理します。
  • WAPboxはWAPゲートウェイ機能を処理します。

異なるホスト上に複数のSMSboxと複数のWAPboxを配置して、より大きな負荷を処理できるようにすることができます。

Kannelはデータベース統合もサポートし、 mysqlをサポートします 、 pgsql sdb mssql sqlite3 oracle redis およびcassandra

Kannelは幅広いGSMモデムをサポートしています。さらに、適切なドライバを使用してシリアルまたはUSBポート経由でアクセスでき、ATコマンドをサポートするGSMモデムは、Kannelで使用されます。

Kannel SMSゲートウェイをインストールする準備をします:

ここでは、KannelSMSGatewayの最新の安定バージョン1.4.5をソースtarファイルからDebian10(バスター)にインストールします。 。ここでは、コアコンポーネントを構成します: Bearerbox およびsmsbox これはSMSゲートウェイに使用されます。

SMS-GWホストIP 192.168.10.38
WindowsクライアントホストIP 192.168.10.31
LinuxクライアントホストIP 192.168.10.37
GSMモデムモデル Huawei E303 3G /GSMUSBモデム

OSリリースを確認してください

root@sms-gw:~# cat /etc/os-release

出力:

USBモデムをLinuxホストに接続し、 lsusb を発行して、モデムがモデムを検出するかどうかを確認します。 コマンド

root@sms-gw:~# lsusb

出力:

モデムがバス2で検出されました。

次に、モデムが接続されているTTYを見つける必要があります

root@sms-gw:~# ls /dev/ttyUSB*

出力:

モデムが/dev / ttyUSB0に接続されていることがわかります および/dev / ttyUSB1 。通常、これらのモデムのボーレートは9600または115200です。

便利なツールwvdialがあります 、モデムのUSBTTYとボーレートを識別します。 wvdial 通常、モバイルインターネットを使用するためのコマンドラインPPPダイヤラとして使用されます。

wvdialをインストールして、モデムのUSBTTYとボーレートを確認します。

root@sms-gw:~# apt-get update
root@sms-gw:~# apt-get install -y wvdial

wvdialconfを発行します モデムのTTYとボーレートを検出するコマンド

root@sms-gw:~# wvdialconf

出力:

出力から、モデムが / dev / ttyUSB0に接続されていることがわかります。 ボーレートID9600。wvdialconfは、基本的なモデム構成も /etc/wvdial.confに書き込みます。 ファイル。

次に、Kannelに必要な依存関係をインストールします

root@sms-gw:~# apt-get install -y linux-headers-$(uname -r) build-essential make gcc cpp wget curl libxml2 libxml2-dev bison flex byacc zlib1g-dev libiconv-hook1 libtool

Kannel SMSゲートウェイのインストール:

https://kannel.org/download/1.4.5/gateway-1.4.5.tar.gzからソースtarballをダウンロード

root@sms-gw:~# wget --no-check-certificate https://kannel.org/download/1.4.5/gateway-1.4.5.tar.gz

ファイルを解凍し、ソースディレクトリに入ります

root@sms-gw:~# tar -zxf gateway-1.4.5.tar.gz
root@sms-gw:~# cd gateway-1.4.5/

configureを実行します kannelホームディレクトリプレフィックスとstart-stop-deamonを含むファイル。ここでは/usr / local / kannelを使用しています。 カネルのホームディレクトリとして

root@sms-gw:~/gateway-1.4.5# ./configure  --enable-start-stop-daemon --prefix=/usr/local/kannel

wapboxを無効にすることもできます 使用しないので

root@sms-gw:~/gateway-1.4.5# ./configure  --enable-start-stop-daemon --prefix=/usr/local/kannel  --disable-wap

設定が正常に完了した後 スクリプトを実行し、パッケージをコンパイルします

root@sms-gw:~/gateway-1.4.5# make

データファイルとドキュメントを含むプログラムをインストールする

root@sms-gw:~/gateway-1.4.5# make install

必要なバイナリ、ライブラリ、ドキュメントを / usr / local / kannel /のさまざまなディレクトリにインストールします。 場所。

注: 作成中に問題が発生した場合 クリーンアップまたはアンインストールして最初からやり直すことができます。クリーンに実行するにはmakeclean 、アンインストールするには、 make Uninstallを実行します。 コマンド。

次に、 etcを作成します 、実行 およびログ ディレクトリ

root@sms-gw:~# mkdir /usr/local/kannel/etc
root@sms-gw:~# mkdir /usr/local/kannel/run
root@sms-gw:~# mkdir /var/log/kannel/

kannel構成ファイル/usr/local/kannel/etc/kannel.confを作成します 以下の内容で

##CORE
group = core
admin-port = 13000
smsbox-port = 13001
admin-password = sms-gw-admin-passwd
status-password = sms-gw-status-passwd
admin-deny-ip = "*.*.*.*"
admin-allow-ip = "*.*.*.*"
box-deny-ip = "*.*.*.*"
box-allow-ip = "*.*.*.*"
log-level = 0
log-file = "https://1118798822.rsc.cdn77.org/var/log/kannel/kannel.log"
dlr-storage = internal
sms-resend-retry = 1

##SMSC
group = smsc
smsc = at
smsc-id = smsc01
allowed-smsc-id = smsc01
preferred-smsc-id = smsc01
modemtype = Huawei
device = /dev/ttyUSB0
speed = 9600
alt-charset = "GSM"
sim-buffering = true
log-file = /var/log/kannel/smsc01-gsm1.log
log-level = 0

##MODEMS
group = modems
id = Huawei
enable-mms = true
init-string = "ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0;+CNMI=1,3,2,2,1;+CMEE=1;+CPMS=\"SM\",\"SM\",\"SM\";+CMGF=0;+CSCS=GSM
speed = 9600
detect-string = "huawei"

##SMSBOX
group = smsbox
bearerbox-host = localhost
sendsms-port = 13013
global-sender = 13013
mo-recode = true
sendsms-chars = "0123456789 +-"
log-file = "https://1118798822.rsc.cdn77.org/var/log/kannel/smsbox.log"
log-level = 0
access-log = "https://1118798822.rsc.cdn77.org/var/log/kannel/access.log"

##SMS-USER
group = sendsms-user
user-deny-ip = "*.*.*.*"
user-allow-ip = "*.*.*.*"
username = kannel
password = kannelpasswd
default-smsc = smsc01
concatenation = 1
max-messages = 10

##SMS-SERVICE
group = sms-service
keyword = default
get-url = " "http://%S"
accept-x-kannel-headers = true
max-messages = 10
concatenation = true
catch-all = true
omit-empty = true

注: get-url sms-sericeの設定ディレクティブ groupは、リモートHTTPサーバーのHTTPAPI呼び出しスタイルを示します。例:リモートPlaySMSサーバーの場合

get-url = "http://PLAYSMS-SERVER-IP/playsms/plugin/gateway/kannel/geturl.php?t=%t&q=%q&a=%aQ=%Q&smsc=%i"
>

initを作成します /etc/init.d/kannelとしてカネルボックスを開始/停止するスクリプト

#!/bin/bash
# Start/stop the Kannel boxes: One bearer box and one SMS box.

BOXPATH=/usr/local/kannel/sbin
PIDFILES=/usr/local/kannel/run
CONFDIR=/usr/local/kannel/etc
CONF=$CONFDIR/kannel.conf

USER=kannel
VERSION=""

RB=$BOXPATH/run_kannel_box$VERSION
BB=$BOXPATH/bearerbox$VERSION
WB=$BOXPATH/wapbox$VERSION
SB=$BOXPATH/smsbox$VERSION
SSD=$BOXPATH/start-stop-daemon$VERSION

PATH=$BOXPATH:$PATH

case "$1" in
start)
echo -n "Starting WAP gateway: bearerbox"
$SSD --start --quiet --pidfile $PIDFILES/kannel_bearerbox.pid --exec $RB -- --pidfile $PIDFILES/kannel_bearerbox.pid $BB -- $CONF
echo -n " smsbox"
$SSD --start --quiet --pidfile $PIDFILES/kannel_smsbox.pid --exec $RB -- --pidfile $PIDFILES/kannel_smsbox.pid $SB -- $CONF
sleep 3
echo "."
;;

stop)
echo -n "Stopping WAP gateway: "
echo -n " smsbox"
$SSD --stop --quiet --pidfile $PIDFILES/kannel_smsbox.pid --exec $RB
echo -n " bearerbox"
$SSD --stop --quiet --pidfile $PIDFILES/kannel_bearerbox.pid --exec $RB
echo "."
;;

status)
CORE_CONF=$(grep -r 'group[[:space:]]*=[[:space:]]*core' $CONFDIR | cut -d: -f1)
ADMIN_PORT=$(grep '^admin-port' $CORE_CONF | sed "s/.*=[[:space:]]*//")
ADMIN_PASS=$(grep '^admin-password' $CORE_CONF | sed "s/.*=[[:space:]]*//")
STATUS_URL="http://127.0.0.1:${ADMIN_PORT}/status.txt?password=${ADMIN_PASS}"
curl $STATUS_URL
;;

reload)
# We don't have support for this yet.
exit 1
;;

restart|force-reload)
$0 stop
sleep 3
$0 start
;;

*)
echo "Usage: $0 {start|stop|status|reload|restart|force-reload}"
exit 1

esac

exit 0

注: 上記のスクリプトはデフォルトのinit.d カネルのスクリプト。この構成は、単一のマシンでKannelを実行している小規模なサイトに適しています。カネルのバイナリが$BOXPATHにあることを確認してください または$PATH沿いのどこか 。 run_kannel_box $ BOXPATHにある必要があります 。

/etc/init.d/kannelを作成します ファイル実行可能

root@sms-gw:~# chmod +x /etc/init.d/kannel

カネルを開始

root@sms-gw:~# /etc/init.d/kannel start

出力:

カネルベアラーボックスを確認してください およびsmsbox リスニング状態

Linuxボックス内からカネルのステータスを確認する

root@sms-gw:~# /etc/init.d/kannel status

http://192.168.10.38:13000/status?password=sms‑gw‑admin‑passwdを使用します ステータスを確認するためのWindowsクライアントマシンブラウザからのURL

Kannel SMSゲートウェイを使用したSMSの送信:

URLを使用して、任意のクライアントマシンブラウザからSMSを送信できます。例:

http://192.168.10.38:13013/cgi-bin/sendsms?username=kannel&password=kannelpasswd&to=01700000000&text=SMS+from+kannel+01

ウェブページにSMSプッシュ返信コードが表示されます0:配信が承認されました 、これは、Kannelが受信者への配信のためにSMSを受け入れたことを示します

curlを使用してLinuxボックスからSMSを送信する

root@host1:~# curl "http://192.168.10.38:13013/cgi-bin/sendsms?username=kannel&password=kannelpasswd&to=01700000000&text=SMS+from+kannel+02"

出力:

curlを使用してファイルからSMSテキストを使用してSMSを送信する

root@host1:~# echo "SMS from file using curl" > smsfile.txt
root@host1:~# curl "http://192.168.10.38:13013/cgi-bin/sendsms?username=kannel&password=kannelpasswd&to=01700000000" -G --data-urlencode [email protected]

配管によるSMSの送信 curlへの出力

root@host1:~# printf "SMS from output" | curl "http://192.168.10.38:13013/cgi-bin/sendsms?username=kannel&password=kannelpasswd&to=01700000000" -G --data-urlencode text@-

モバイルデバイスが受信したSMS

注: KannelからのSMSプッシュ応答コードは他にもいくつかあります

ステータスコード メッセージ本文 意味
202 0:配信が承認されました SMSが受け入れられ、SMSCドライバーに配信されます
202 3:後で配信するためにキューに入れられました ベアラーボックス メッセージを受け入れてキューに保存し、後で配信します
4xx (さまざま) リクエストまたはKannelの構成に問題がありました。リクエストとKannelの構成を確認してください。
503 一時的な障害。後でもう一度やり直してください 一時的な障害が発生しました。後でもう一度やり直してください。

ログの確認:

Kannelコアbearerboxが見つかります /var/log/kannel/kannel.logにログインします ファイル。

/var/log/kannel/access.log ファイルは、クライアントからの成功したアクセス要求をログに記録します。

ログの例:

/var/log/kannel/smsbox.log クライアントのリクエストとbearerboxとの通信をログに記録します。

GSMモデム関連のログは、 /var/log/kannel/smsc01-gsm1.logにあります。 ファイル。

ログの重大度レベル:

ログレベル kannel.confの各構成グループの構成ディレクティブ fileは、そのグループのログ重大度レベルを定義し、それに応じて log-fileに記録します。 そのグループで与えられる 。ログレベルは次のとおりです。

0>デバッグ
1>情報
2>警告
3>エラー
4>パニック

セキュリティのヒント:

  • admin-deny-ip およびadmin-allow-ip IPアドレスのリストを定義するディレクティブは、カネル管理ポータルへのアクセスを許可または禁止します。各リストには、「;」で区切った複数のアドレスを含めることができます、「*」はオクテット内のすべての数値を表します。例:192.168.10.31を許可し、ローカルホストが管理ポータルにアクセスでき、他のすべてのIPアドレスをブロックする必要がある場合、構成ディレクティブは次のようになります

admin-deny-ip =“ *。*。*。*”
admin-allow-ip =“127。*。*。*; 192.168.10.31インチ

  • 同様にbox-deny-ip およびbox-allow-ip ディレクティブは、 Bearerboxへのアクセスを許可されるIPアドレスのリストを定義します 。複数のsmsboxを使用する場合に便利です 。 smsboxを一覧表示します box‑allow‑ipのIPアドレス Bearerboxにアクセスするには プログラム。
  • user-deny-ip およびuser-allow-ip ユーザーのIPアドレスを許可/拒否するために使用されます。
  • denyディレクティブを使用してから、アクセス制御の種類ごとに選択的なIPアドレスを許可することをお勧めします。
  • kannel.conf に表示されるすべてのユーザー名/パスワードオプションには、非常に安全なユーザー名/パスワードを使用してください ファイル。

参照:

  • https://www.kannel.org/download/kannel-userguide-snapshot/userguide.html


Debian
  1. Debian10/11にWebminをインストールする方法

  2. Debian10/11でSSLを暗号化してApache2を保護する

  3. Debian10/11でSSLを暗号化してNginxを保護する

  1. Debian10/11にXFCEデスクトップをインストールする方法

  2. WireguardサーバーをDebian10/11にインストールします

  3. Adobe 11 /Debian10にOpenVPNサーバーをインストールする

  1. Debian10/11にOpenVPNサーバーをインストールします

  2. Debian10/11にKDEプラズマをインストールする方法

  3. Debian10/11にNginxを使用してWordPressをインストールする