カテゴリー
DDNS Software

DDNSサービスを作ってみる(改)

6年前の「DDNSサービスを作ってみる」のその後です。

DDNSが動かなくなった

つい先日リモートサイトにアクセスしていて、そこのルーターの設定を変更していました。そして変更結果を反映させるためにルーターが再起動を始めたと同時に接続が切れました。そこは動的IPアドレスなサイトなのでIPアドレスが変わったためです。それですぐにDDNSがIPアドレスをアップデートしてくれてまたつながるはずなのにつながらないのです。で、調べてみるとDDNSサーバー側でPHPがエラーを吐いていました。そういえば今まで延ばしに延ばしていたPHP5からPHP7へのアップグレードを先月に行ったのをやっと思い出しました。そしてPHP7からはMySQL関数がサポートされなくなっていたのに今まで気が付いていなかったというお粗末な顛末でした。最近はルーターを再起動させるとかしないとIPアドレスは全然変わってくれないので全くぬかっていました。とほほ。

カテゴリー
DDNS Software

DDNSサービスを作ってみる

先日のエントリーの続き。

追記(2019/10/10)
PHP7(MySQLi)に対応しました。DDNSサービスを作ってみる(改)へどうぞ。

DDNSサービス構築の下調べ

まずは題名の通りの下調べ。さすがに全部一から自分でDDNSサービスを作るのはさすがに面倒というか、この広い世の中にはきっと先人が情報を公開してくれていると信じてあれこれ探してみました。

DDNSでぐぐっただけだとプロバイダや何かの団体が提供している無料DDNSサービスは沢山見つかります。また、そのサービスを自宅サーバーなどで使うためのDDNSクライアントの設定記事も同様に沢山見つかります。でも、そのDDNSサービスそのものを構築する具体的な方法まで踏み込んで書いてある記事はなかなか見つからないのです。

カテゴリー
FreeBSD MySQL Software

MySQLに外部から延々とアクセス(その2)

前回の続き。

友人がこのブログが止まっていると教えてくれました。
/etc/hosts.allowでmysqlへのアクセス制限をしたつもりだったけど、また中国方面からしつこくアクセスが始まって何故かmysqlが反応しなくなったようです。どうもこの辺の挙動がよく分からんです。
そこで、どうせMySQLは自サーバー上でしか使わないのでネットワーク越しに反応をしないように起動オプションに下記を追加しました。

--skip-networking

これで3306ポートは外部に露出しなくなります。

本当は、ipfwとか使ってパケットをフィルターしていまえばいいんだけど、下手に設定を間違えると外部からアクセス不能になってしまうのでまだ やってないんです。 以前にNATをリモートで設定しようとしたらインストール直後のデフォルトルールがdeny allでいきなりアクセス不能になってしまった痛い経験がトラウマになってます。

カテゴリー
FreeBSD MySQL Software

MySQLに外部から延々とアクセス

Sep  1 18:58:30 ns mysqld[3641]: twist 220.162.59.165 to /bin/echo "You are not welcome to use mysqld from 220.162.59.165."

先月末にmysql-server-5.1.20から5.1.21に上げてからだと思うんですが、こんなログがauth.logに残るようになりま した。 そして、この中国方面からのアクセスが来るとブログが止まります。このエラーメッセージってどこが出しているのかな~っと思って調べてみると、 /etc/hosts.allowにありました。

# The rest of the daemons are protected.
ALL : ALL
: severity auth.info
: twist /bin/echo "You are not welcome to use %d from %h."

inetd.confにmysqldは設定していないけどsshd同様にhosts.allowを参照しているみたいです。 つーことは、ここでアクセス制限をすればいいってことだと気付き早速以下の設定をhosts.allowに追記。

mysqld : localhost : allow
mysqld : ALL : deny

これで中国方面からのアクセスは来なくなりました。でも、何故このアクセスでmysqldが変になったのかは不明。誰か知っている人いたら教えて下さい。

カテゴリー
FreeBSD MySQL Software

FreeBSD (phpMyAdmin: PMA Database … OK ではありません。)

phpMyAdminを使っていて「PMA Database … OK ではありません。」というエラーが出る。調べてみるとここが一番分かりやすかった。mysql5.1でそのままOKでした。感謝。

 

以下、そのままメモとしてコピペしてます。

phpMyAdminで’phpmyadmin’という名のDBを作成。そのDBに対して以下のSQL文を実行。

CREATE TABLE `pma_bookmark` (
`id` int(11) NOT NULL auto_increment,
`dbase` varchar(255) NOT NULL default ‘’,
`user` varchar(255) NOT NULL default ‘’,
`label` varchar(255) NOT NULL default ‘’,
`query` text NOT NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM COMMENT=’Bookmarks’;

CREATE TABLE `pma_column_info` (
`id` int(5) unsigned NOT NULL auto_increment,
`db_name` varchar(64) NOT NULL default ‘’,
`table_name` varchar(64) NOT NULL default ‘’,
`column_name` varchar(64) NOT NULL default ‘’,
`comment` varchar(255) NOT NULL default ‘’,
`mimetype` varchar(255) NOT NULL default ‘’,
`transformation` varchar(255) NOT NULL default ‘’,
`transformation_options` varchar(255) NOT NULL default ‘’,
PRIMARY KEY (`id`),
UNIQUE KEY `db_name` (`db_name`,`table_name`,`column_name`)
) TYPE=MyISAM COMMENT=’Column information for phpMyAdmin’;

CREATE TABLE `pma_history` (
`id` bigint(20) unsigned NOT NULL auto_increment,
`username` varchar(64) NOT NULL default ‘’,
`db` varchar(64) NOT NULL default ‘’,
`table` varchar(64) NOT NULL default ‘’,
`timevalue` timestamp(14) NOT NULL,
`sqlquery` text NOT NULL,
PRIMARY KEY (`id`),
KEY `username` (`username`,`db`,`table`,`timevalue`)
) TYPE=MyISAM COMMENT=’SQL history for phpMyAdmin’;

CREATE TABLE `pma_pdf_pages` (
`db_name` varchar(64) NOT NULL default ‘’,
`page_nr` int(10) unsigned NOT NULL auto_increment,
`page_descr` varchar(50) NOT NULL default ‘’,
PRIMARY KEY (`page_nr`),
KEY `db_name` (`db_name`)
) TYPE=MyISAM COMMENT=’PDF relation pages for phpMyAdmin’;

CREATE TABLE `pma_relation` (
`master_db` varchar(64) NOT NULL default ‘’,
`master_table` varchar(64) NOT NULL default ‘’,
`master_field` varchar(64) NOT NULL default ‘’,
`foreign_db` varchar(64) NOT NULL default ‘’,
`foreign_table` varchar(64) NOT NULL default ‘’,
`foreign_field` varchar(64) NOT NULL default ‘’,
PRIMARY KEY (`master_db`,`master_table`,`master_field`),
KEY `foreign_field` (`foreign_db`,`foreign_table`)
) TYPE=MyISAM COMMENT=’Relation table‘;

CREATE TABLE `pma_table_coords` (
`db_name` varchar(64) NOT NULL default ‘’,
`table_name` varchar(64) NOT NULL default ‘’,
`pdf_page_number` int(11) NOT NULL default ‘0′,
`x` float unsigned NOT NULL default ‘0′,
`y` float unsigned NOT NULL default ‘0′,
PRIMARY KEY (`db_name`,`table_name`,`pdf_page_number`)
) TYPE=MyISAM COMMENT=’Table coordinates for phpMyAdmin PDF output’;

CREATE TABLE `pma_table_info` (
`db_name` varchar(64) NOT NULL default ‘’,
`table_name` varchar(64) NOT NULL default ‘’,
`display_field` varchar(64) NOT NULL default ‘’,
PRIMARY KEY (`db_name`,`table_name`)
) TYPE=MyISAM COMMENT=’Table information for phpMyAdmin’;

その後、 /usr/local/www/phpMyAdmin/config.inc.php を下記のように編集。

$cfg[‘Servers’][$i][‘pmadb’] = ‘phpmyadmin’; // Database used for Relation, Bookmark and PDF Features
// (see scripts/create_tables.sql)
// - leave blank for no support
// DEFAULT: ‘phpmyadmin’
$cfg[‘Servers’][$i][‘bookmarktable‘] = ‘pma_bookmark’; // Bookmark table
// - leave blank for no bookmark support
// DEFAULT: ‘pma_bookmark’
$cfg[‘Servers’][$i][‘relation’] = ‘pma_relation’; // table to describe the relation between links (see doc)
// - leave blank for no relation-links support
// DEFAULT: ‘pma_relation’
$cfg[‘Servers’][$i][‘table_info’] = ‘pma_table_info’; // table to describe the display fields
// - leave blank for no display fields support
// DEFAULT: ‘pma_table_info’
$cfg[‘Servers’][$i][‘table_coords’] = ‘pma_table_coords’; // table to describe the tables position for the PDF schema
// - leave blank for no PDF schema support
// DEFAULT: ‘pma_table_coords’
$cfg[‘Servers’][$i][‘pdf_pages’] = ‘pma_pdf_pages’; // table to describe pages of relationpdf
// - leave blank if you don’t want to use this
// DEFAULT: ‘pma_pdf_pages’
$cfg[‘Servers’][$i][‘column_info’] = ‘pma_column_info’; // table to store column information
// - leave blank for no column comments/mime types
// DEFAULT: ‘pma_column_info’
$cfg[‘Servers’][$i][‘history’] = ‘pma_history’; // table to store SQL history
// - leave blank for no SQL query history
// DEFAULT: ‘pma_history’