web-dev-qa-db-ja.com

Debianはunixodbcをサポートするfreeradiusパッケージをビルドします

これが私が達成しようとしていることです。MicrosoftSQLバックエンドを使用してfreeradiusをインストールしたいと思います。私はインターネットで、unixodbcドライバーを使用してこの目標を達成する必要があることを読みました。

Apt-getからunixodbcドライバーをセットアップでき、それを使用するようにFreetdsを構成した場合。インストールと構成が完了したら、次のテストコマンドを実行できます。

isql -v DVSQLServer USERNAME PASSWORD
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+

これは実際に機能しています。しかし、freeradius tarbalをダウンロードすると、rlm_sql_unixodbcドライバーを使用できないことがわかりました。これは、debian/rulesファイルでフラグを使用してコンパイルするためです。

--without-rlm_sql_unixodbc

Debian/rulesからフラグを削除し、コマンドラインを使用して独自のパッケージを作成するのは簡単だと思いました。

fakeroot dpkg-buildpackage -b -uc

しかし、それはエラーで失敗しています:

checking for SQLConnect in -lodbc... no
checking for sql.h... yes
configure: error: set --without-rlm_sql_unixodbc to disable it explicitly.
configure: error: ./configure failed for ./drivers/rlm_sql_unixodbc
configure: error: ./configure failed for src/modules/rlm_sql
make: *** [config.status] Error 1
dpkg-buildpackage: error: debian/rules build gave error exit status 2

正常にコンパイルするために私が欠けているものについて何か考えがありますか?

また、これらのapt-getコマンドを実行して、すべての依存関係があることを確認したこともわかります。

apt-get build-dep -y unixodbc freetds-bin freetds-common freetds-dev tdsodbc freeradius
apt-get install -y unixodbc freetds-bin freetds-common freetds-dev tdsodbc libssl-dev dpkg-dev

よろしく

3
drivard

UnixODBCドライバーを使用してFreeradiusを構築するために必要なすべてのものを検索し、見つけるための4日間のハードワークの後。私は最終的に私のためにうまくいくその解決策を思いついた。この回答は、DebianSqueezeサーバーでunixodbcを使用してFreeradiusをMSSQLバックエンドで動作させるために実行する必要のあるすべての手順を説明しています。

Freeradiusサーバーのコンパイル

MSSQLバックエンドを使用してFreeradiusをインストールするには、unixodbcドライバーを使用してFreeradiusを再コンパイルする必要がありました。このドライバーを有効にするには、Freeradiusが提供するパッケージを変更する必要がありました。

コンパイル元のサーバーの/ etc/apt/sources.listでソースリポジトリが利用可能であることを確認します。それらが欠落している場合、エラーメッセージは次のとおりです。E:sources.listにいくつかの「source」URIを配置する必要があります

deb-srcで始まるソースURI

deb http://debian.mirror.rafal.ca/debian squeeze main contrib non-free
deb-src http://debian.mirror.rafal.ca/debian squeeze main contrib non-free # Source URI
deb http://debian.mirror.rafal.ca/debian-security squeeze/updates main contrib non-free
deb-src http://debian.mirror.rafal.ca/debian-security squeeze/updates main contrib non-free # Source URI

Freeradiusパッケージをコンパイルする前に、依存関係の依存関係をインストールする必要があります。

apt-get build-dep -y unixodbc unixodbc-dev freetds-bin quilt freetds-common freetds-dev \
tdsodbc freeradius libiodbc2-dev

依存関係パッケージをインストールする

apt-get install -y unixodbc libiodbc2-dev freetds-bin freetds-common freetds-dev tdsodbc \
libssl-dev dpkg-dev quilt libssl-dev libpam0g-dev libmysqlclient-dev libgdbm-dev \
libsasl2-dev libperl-dev libpcap-dev python-dev libsnmp-dev libpq-dev libltdl3-dev snmp

次の不足しているシンボリックリンクを作成します

ln -s /usr/lib/libodbc.so.1 /usr/lib/libodbc.so

Freeradiustarballを入手する

wget ftp://ftp.freeradius.org/pub/freeradius/freeradius-server-2.2.0.tar.gz
tar zxf freeradius-server-2.2.0.tar.gz
cd freeradius-server-2.2.0

Debian/rulesファイルを編集する

vim freeradius-server-2.2.0/debian/rules

-without-rlm_sql_unixodbc(約90行目)を-with-rlm_sql_unixodbcに置き換えます

Debianパッケージをビルドする

Debianパッケージをビルドするには、依存関係がインストールされていることを確認してから、次のコマンドラインを実行します。

fakeroot dpkg-buildpackage -b -uc -d

ls ../

freeradius_2.2.0+git_i386.deb
freeradius-common_2.2.0+git_all.deb
freeradius-dbg_2.2.0+git_i386.deb
freeradius-dialupadmin_2.2.0+git_all.deb
freeradius-iodbc_2.2.0+git_i386.deb
freeradius-krb5_2.2.0+git_i386.deb
freeradius-ldap_2.2.0+git_i386.deb
freeradius-mysql_2.2.0+git_i386.deb
freeradius-postgresql_2.2.0+git_i386.deb
freeradius-utils_2.2.0+git_i386.deb
libfreeradius2_2.2.0+git_i386.deb
libfreeradius-dev_2.2.0+git_i386.deb

パッケージが正常にビルドされたので、親ディレクトリに移動します。そこで、unixodbcをサポートするfreeradiusサーバーをビルドするために必要なすべてのdebianパッケージを微調整する必要があります。

Dpkgコマンドラインを使用してインストールできます。

dpkg -i freeradius_2.2.0+git_i386.deb freeradius-common_2.2.0+git_all.deb freeradius-utils_2.2.0+git_i386.deb \
libfreeradius2_2.2.0+git_i386.deb

Freeradiusパッケージをインストールしたら、サービスを停止しました。

service freeradius stop

コマンドラインを使用してテストしました。

freeradius -X

次に、SQL接続を構成しました。

これらの3つのファイル内でunixodbcドライバーを構成する必要がありました。

/ etc/odbc.ini

[MSSQLServer]
Driver          = FreeTDS
Description     = ODBC connection via FreeTDS
Trace           = No
ServerName      = MSSQLServer
Database        = radius
port            = 1433
tds_version     = 7.0
language        = us_english

/ etc/odbcinst.ini

[FreeTDS]
Description     = TDS driver (MS SQL)
Driver          = /usr/lib/odbc/libtdsodbc.so
Setup           = /usr/lib/odbc/libtdsS.so
FileUsage       = 1

/ etc/freetds/freetds.conf

[MSSQLServer]
    Host = mssqlserver.example.com
    port = 1433
    tds version = 7.0

Isqlコマンドラインを使用して接続をテストします

isql -v MSSQLServer your_db_username 'your_db_password'

# what you should see
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> 

今こそ、このunixodbcを使用するようにFreeradiusを構成するときです。

これは、sql.confファイルを機能させるために行った変更です。

/ etc/freeradius/sql.conf

database = "mssql"

#
#  Which FreeRADIUS driver to use.
#
driver = "rlm_sql_unixodbc"

# Connection info:
server = "MSSQLServer"
login = "your_db_username"
password = "your_db_password"

# Database table configuration for everything except Oracle
radius_db = "radius"

$INCLUDE sql/${database}/dialup.conf

続行する前に、/ etc/freeradius/sql/mssql /フォルダーを作成して、MSSQLのdialup.confファイルを保持します。

mkdir -p /etc/freeradius/sql/mssql/

freeradius-mysql_2.2.0 + git_i386.debパッケージからdialup.confファイルを取得する必要がありました。

Freeradius-mysqlパッケージからファイルをコピーしたら、ここ/ etc/freeradius/sql/mssql/dialup.confにコピーします。

MSSQLで動作させるには、ファイルを編集し、すべての<< 32convert(bigint、value)に置き換えます。

# MySQL version
'%{%{Acct-Input-Gigawords}:-0}'  << 32

# MSSQL modified version
convert(bigint, '%{%{Acct-Input-Gigawords}:-0}')

ファイルを保存すれば、それで十分です。 MSSQLスキーマがない場合は、freeradiuswikiを参照してください。 http://wiki.freeradius.org/config/MS%20SQL%20DDL%20script

AcctStopTime列に[〜#〜] null [〜#〜]を挿入しようとして問題が発生しましたそのため、デフォルトの列タイプを変更しました。

alter table radius.dbo.radacct
alter column AcctStopTime datetime null;

その後、freeradiusの起動を再試行すると、MSSQLでデータが収集されます。

freeradius -X

よろしく

3
drivard