lightmpd/upnpgw 2台構成の時のPlayer側へのアクセス

727 views
Skip to first unread message

kku...@gmail.com

unread,
Dec 9, 2020, 11:48:51 AM12/9/20
to lightMPD
lightmpd/upnpgw 2台構成の時のPlayer側へのアクセスは
ホームネットワークとは別のネットワークなので
通常はホームネットワーク上の機器 からアクセスする事はできないのですが
8023=10.0.0.2:23 設定により可能になっています。
これを
lightmpd/upnpgw(APUへインストールしたモノ)をフロント側として
一般的なLinux-OS(Archlinux等)をPlayer側として組み合わせた場合にも
アクセス可能にしたいのですが
どの様に設定すれば可能になるでしょうか?
Archlinux(player側)のPrivoxyいじってみましたが自分の腕では出来ませんでした。
可能になるのであれば教えていただきたくお願いしますm(_ _)m


digififan

unread,
Dec 10, 2020, 8:37:28 AM12/10/20
to lightMPD
kkumaxさん

質問は archlinux ————- apu(upnpgw)—————— 


の構成を取りたいということですか?

それなら、

archlinuxのIPアドレスを10.0.0.2にすればOKです。

archlinuxでのIPアドレスの設定がlightmpdと同じならば

/etc/network/interfaces のeth0 を

iface eth0 inet static
 network 10.0.0.0
 address 10.0.0.2
 gateway 10.0.0.1
 netmask 255.255.255.252
 broadcast 10.0.0.3

にしてください。

kku...@gmail.com

unread,
Dec 10, 2020, 9:12:06 AM12/10/20
to lightMPD
現状としてArchlinux Player側は

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eno1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether a0:8c:fd:d5:4e:f4 brd ff:ff:ff:ff:ff:ff
3: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 68:05:ca:92:ad:ac brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.2/30 brd 10.0.0.3 scope global enp2s0
       valid_lft forever preferred_lft forever
    inet6 fe80::6a05:caff:fe92:adac/64 scope link
       valid_lft forever preferred_lft forever
4: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:1b:21:63:ed:5c brd ff:ff:ff:ff:ff:ff
    inet 10.0.1.2/30 brd 10.0.1.3 scope global enp3s0
       valid_lft forever preferred_lft forever
    inet6 fe80::21b:21ff:fe63:ed5c/64 scope link
       valid_lft forever preferred_lft forever

この様なアドレスの割当になっています。
最近?/etc/network/interfaces をイジってもアドレスが設定できなくなって??
etc/sysytemd/networkの下に下のような名前でファイルを作って設定する様になったみたいな??

$cat enp2s0.network

[Match] Name=enp2s [Network] Address=10.0.0.2/30 Gateway=10.0.0.1
$catenp3s0.network

[Match] Name=enp3s0 [Network] Address=10.0.1.2/30 Gateway=10.0.0.1

この様に設定して telnet 192.168.1.23 8023 として通信しようとすると
permission denied となり失敗しています。

digififan

unread,
Dec 10, 2020, 9:35:51 AM12/10/20
to lightMPD
kkumaxさん

telnetでupnpgwにログインしてupnpgwから

telnet 10.0.0.2

を行うとどうなりますか?

この様に設定して telnet 192.168.1.23 8023 として通信しようとするとpermission denied となり失敗しています。`

telnet を行っているPCのosは何ですか?
多分、iptableなどで8023のポートが禁止されていのだと思います。
8023というよりxxxx 以上は禁止というような設定になっていると思います。
iptableをいじるのが面倒な場合は、upnpgwの8023を許可されたいるポートに変更するのがいいかもしれません。
この場合、ポートの重複には気をつけてください。

kku...@gmail.com

unread,
Dec 10, 2020, 9:58:45 AM12/10/20
to lightMPD
>telnetでupnpgwにログインしてupnpgwから
>telnet 10.0.0.2

この結果は connection closed by foreign host となります。

>telnet を行っているPCのosは何ですか?
ubuntu studio です。
すいません。パーミッションとかのエラーではなかったです。(勘違いですm(_ _)m

$ telnet 192.168.1.23 8023
Trying 192.168.11.23...
Connected to 192.168.11.23.
Escape character is '^]'.

Linux 5.4.78-rt44-1-rt-lts (Archplayer) (pts/0)

Connection closed by foreign host.

一応現状で音は出ています。
フロント側は upnpgw-nasgate のconfを使っています。

kku...@gmail.com

unread,
Dec 10, 2020, 10:45:04 AM12/10/20
to lightMPD
たぶんこれだと思うが読んでも解決出来なかった(泣)

digififan

unread,
Dec 11, 2020, 6:14:33 AM12/11/20
to lightMPD
kkumaxさん

> >telnetでupnpgwにログインしてupnpgwから
> >telnet 10.0.0.2
> この結果は connection closed by foreign host となります。

archlinuxにはコンソールがありますか?あるならarchlinuxにloginして

telnet localhost

としてlogin のプロンプトがでればarchlinux側のtelnetは動いています。
まず、この確認をして下さい。

この状態で、connection closed が出る場合は、archlinux側のdefault gatewayの設定がうまくいってなことが考えられます。
default gatewayの確認をしてください。

その前に、upnpgwからtelnet 10.0.1.2 を行うとどうなりますか?


kku...@gmail.com

unread,
Dec 11, 2020, 6:38:03 AM12/11/20
to lightMPD
digififanさん
お世話になっています。

>upnpgwからtelnet 10.0.1.2 を行うとどうなりますか?

$  telnet 192.168.1.23
Trying 192.168.1.23...
Connected to 192.168.1.23.

Escape character is '^]'.

lightmpd login: root
Password:
# telnet  10.0.1.2
Connected to 10.0.1.2
upnpgwへのログインは出来てそこから

# telnet  10.0.1.2
Connected to 10.0.1.2

Entering character mode

Escape character is '^]'.


Linux 5.4.78-rt44-1-rt-lts (lightmpd) (pts/0)


Connection closed by foreign host
となり失敗します。

>archlinuxにはコンソールがありますか?あるならarchlinuxにloginして
これもやはり 
Connection closed by foreign host
となり失敗します。



Linux 5.4.78-rt44-1-rt-lts (lightmpd) (pts/0)


Connection closed by foreign host

ダメです。

digififan

unread,
Dec 11, 2020, 8:44:46 AM12/11/20
to lightMPD
kkumaxさん

> >archlinuxにはコンソールがありますか?あるならarchlinuxにloginして
> これもやはり
> Connection closed by foreign host
> となり失敗します。

archlinuxのtelnetの設定に問題があります。
archlinuxは普段使わないのでよくわからないのですが、多分tcp wrapper(tcpd)で拒否されていると思います。
tcp wrapperは/etc/hosts.allow,/etc/hosts.denyでアクセスを制御します。

/etc/hosts.allow
/etc/hosts.deny

を確認して下さい。

私は、ubuntuを使っていますが、inetdでネットワークのサービスを起動しています。
hosts.allowは
ALL: ALL

hosts.denyは空になっています。
この設定は全てのユーザに対して、すべてのホストからのアクセスを許します。

hosts.allowが空になっている場合は、全てのホスト、全てのユーザが拒否されます。

kku...@gmail.com

unread,
Dec 11, 2020, 11:14:02 PM12/11/20
to lightMPD
digififanさん
アドバイスありがとうございますm(_ _)m
とりあえず出来ました??(笑)



色々いじりすぎてどれが効果があったのか?ですが
1.archlinuxにはインストール後には無いので新設しました。
# cat /etc/hosts.allow

ALL:ALL:ALLOW
telnet:ALL:ALLOW

2.teknetに加えました。
# cat /usr/lib/systemd/system/telnet@.service
[Unit]
Description=Telnet Server
After=local-fs.target

[Service]
##ExecStart=-/usr/bin/telnetd
ExecStart=-/usr/bin/telnetd -E "/bin/login -H"
StandardInput=socket


3./etc/securetty

# cat /etc/securetty
# File which lists terminals from which root can log in.
# See securetty(5) for details.

console
tty1
tty2
tty3
tty4
tty5
tty6
ttyS0
hvc0
pts/0
pts/1
pts/2

これで何回もtelnet コマンドを叩いていると何度めかに入れます?
なんだか変ですが

digififan

unread,
Dec 13, 2020, 9:59:01 AM12/13/20
to lightMPD
kkumaxさん 

> 2.teknetに加えました。
> これで何回もtelnet コマンドを叩いていると何度めかに入れます?

systemdに登録しなくてもtelnetのポート(23)はlistenされていましたから、systemdにtelnetdを登録したことにより、23のポートを2つのプログラムがlistenしている状態になっています。
このような状態のときに23にconnectされるとどちらのプログラムがacceptをかけるか不定です。
たまたま、正しく動いているプログラムがacceptをかけたときにtelnetが成功したのだと思います。

これだけでは、新たにsystemdから起動したtelnetdと、もともと動いていたポート23をlistenしているプログラムのどちらがlistenしたときにtelnetが起動するかはわかりません。

systemdにtelnetを登録しないで、hosts.allowでtelnetを許可した場合はどうなりますか?
archlinuxにはinetdまたはxinetdが動いていませんか?

kku...@gmail.com

unread,
Dec 14, 2020, 1:09:10 AM12/14/20
to lightMPD
digififanさん
アドバイスありがとうございます。
Archlinux、telnetの説明が良くわからなくて
-----------------------------------------------

systemd で telnet サーバーの接続を有効化するには、

ブート時に自動的に telnet サーバーを起動するときは

telnet.socket有効化し、一時的に接続をテストするときは、

telnet.socket起動します。

xinetd で telnet サーバーの接続を有効化するには、

/etc/xinetd.d/telnet を編集して、disable = yes

disable = no に変更し、xinetd サービスを再起動します。

ブート時に起動させたい場合は systemd の xinetd サービスを有効化してください。

--------------------------------------------------

手当り次第やってみた結果...(笑)

これから仕事なので帰ってきたら見直して見ます。m(_ _)m

kku...@gmail.com

unread,
Dec 16, 2020, 8:00:00 PM12/16/20
to lightMPD
digififanさん
レスが遅くなり申し訳ありません。
まず現状、接続できる状態は

● xinetd.service - A secure replacement for inetd
     Loaded: loaded (/usr/lib/systemd/system/xinetd.service; enabled; vendor preset: disabled)
     Active: active (running) since Thu 2020-12-17 00:29:22 UTC; 5min ago
   Main PID: 591 (xinetd)
      Tasks: 1 (limit: 9442)
     Memory: 1.3M
     CGroup: /system.slice/xinetd.service
             └─591 /usr/bin/xinetd -dontfork

Dec 17 00:29:23 archlinux xinetd[591]: bind failed (Address already in use (errno = 98)). service = telnet
Dec 17 00:29:23 archlinux xinetd[591]: bind retry attempt 8
Dec 17 00:29:23 archlinux xinetd[591]: bind failed (Address already in use (errno = 98)). service = telnet
Dec 17 00:29:23 archlinux xinetd[591]: bind retry attempt 9
Dec 17 00:29:23 archlinux xinetd[591]: bind failed (Address already in use (errno = 98)). service = telnet
Dec 17 00:29:23 archlinux xinetd[591]: bind retry attempt 10
Dec 17 00:29:23 archlinux xinetd[591]: bind failed (Address already in use (errno = 98)). service = telnet
Dec 17 00:29:23 archlinux xinetd[591]: Service telnet failed to start and is deactivated.
Dec 17 00:29:23 archlinux xinetd[591]: 2.3.15.4 started with loadavg options compiled in.
Dec 17 00:29:23 archlinux xinetd[591]: Started working: 0 available services

------------------------------------------------------------------------------------------

 systemctl status telnet.socket
● telnet.socket - Telnet Server Activation Socket
     Loaded: loaded (/usr/lib/systemd/system/telnet.socket; enabled; vendor preset: disabled)
     Active: active (listening) since Thu 2020-12-17 00:29:22 UTC; 6min ago
   Triggers: ● tel...@86-10.0.0.2:23-192.168.11.11:52760.service
       Docs: man:telnetd(8)
     Listen: [::]:23 (Stream)
   Accepted: 87; Connected: 1;
      Tasks: 0 (limit: 9442)
     Memory: 1008.0K
     CGroup: /system.slice/telnet.socket

Dec 17 00:29:22 archlinux systemd[1]: Listening on Telnet Server Activation Socket.

となっており喧嘩してますね(笑)という事で片方ずつOFFにして接続できるか?
テストしてみましたが....
telnet.socket と xinetd  をsystemctlで有効にして置かないとまっく接続出来ません??
不安定なので何回もコマンドを打ってやっと接続ですね。困りました。

digififan

unread,
Dec 16, 2020, 9:02:44 PM12/16/20
to lightMPD
kkumaxさん

> telnet.socket と xinetd  をsystemctlで有効にして置かないとまっく接続出来ません??
> 不安定なので何回もコマンドを打ってやっと接続ですね。困りました。

もともとxinetdは動いてましたか?
状況からするとsystemdだけでもtelnetdは動くはずなんですけど。
xinetd.confでtelnetdをdisableにしてsystemdでxinetdを有効にするとどうなりますか?
telnet に失敗したときにxinetd,systemdのログになにか記録されてませんか?

kku...@gmail.com

unread,
Dec 17, 2020, 6:14:51 PM12/17/20
to lightMPD
>もともとxinetdは動いてましたか?
動いていませんでした。インストールもされていませんでした。

>xinetd.confでtelnetdをdisableにしてsystemdでxinetdを有効にするとどうなりますか?
コマンドを打つ回数が減りました!接続できます。

>telnet に失敗したときにxinetd,systemdのログになにか記録されてませんか?
/var/log/messagesが無いです...
btmpがかろうじて読めて 
3pts/00(unknown)::ffff:10.0.0.2

こんな状況です。

digififan

unread,
Dec 19, 2020, 10:02:44 AM12/19/20
to lightMPD
kkumaxさん

> >xinetd.confでtelnetdをdisableにしてsystemdでxinetdを有効にするとどうなりますか?
> コマンドを打つ回数が減りました!接続できます。

接続できない場合は、やはり

 connection closed by foreign host

のメッセージが出ますか?

どうも、うまくいくtelnetdとうまくいかないtelnetdが同時に2つ立ち上がっている感じです。
telnetdはsystemdやxinetdの助けを借りなくてもスタンドアローンで動作します。
ます、ps auxw | grep telnetdでtelnetdが立ち上がっているか確認して下さい。

systemdはxinetdのようにポートを監視し、telnetの様なネットワークアプリケーションのデーモンとして機能しますが、本来はinitのようにプロセスの管理(起動、監視、終了)を行います。
systemdでtelnetのポートの監視とともに,システム起動時にtelnetdをたちあげる様な設定になってないでしょうか?
systemdは普段使っていないので外してるかもしれませんが、

telnet.socket      -     systemdがtelnetのportを監視する
telnet@.service  -     システム起動時にtelnetdを起動する

となっているそうです。
これを同時にenableにするとtelnetdが2つ立ち上がった状態になります。
このページを参考にしました。



kku...@gmail.com

unread,
Dec 19, 2020, 9:52:16 PM12/19/20
to lightMPD
digififanさん
いつもありがとうございます。
>接続できない場合は、やはり
connection closed by foreign host
のメッセージが出ますか?


接続出来ない時
$ telnet 192.168.11.23 8023
Trying 192.168.11.23...
Connected to 192.168.11.23.
Escape character is '^]'.

Linux 5.4.82-rt45-1-rt-lts (Archplayer) (pts/0)

Connection closed by foreign host.

接続出来た時
$ telnet 192.168.11.23 8023

Trying 192.168.11.23...
Connected to 192.168.11.23.
Escape character is '^]'.

Linux 5.4.82-rt45-1-rt-lts (Archplayer) (pts/0)

login: root
Password:
Last login: Fri Dec 18 03:30:01 on pts/0


# ps aux | grep telnet
root         417  0.0  0.0   3648  2592 ?        Ss   02:43   0:00 /usr/bin/telnetd -E /bin/login -H
root         454  0.0  0.0   7412  2432 pts/0    S+   02:48   0:00 grep telnet

# systemctl status telnet@.service
Failed to get properties: Unit name telnet@.service is neither a valid invocation ID nor unit name.

どうすれば状況が掴めるか?




digififan

unread,
Dec 19, 2020, 11:22:11 PM12/19/20
to ligh...@googlegroups.com
kkumaxさん

kkumaxさんの12/12の記事で

> 2.teknetに加えました。
> cat /usr/lib/systemd/system/telnet@.service
> [Unit]Description=Telnet
> ServerAfter=local-fs.target

> [Service]
> ##ExecStart=-/usr/bin/telnetd
> ExecStart=-/usr/bin/telnetd -E "/bin/login -H"
> StandardInput=socket

となっているので、システム起動時にtelnetdが起動されます。

その結果

> ps aux | grep telnet
> root 417 0.0 0.0 3648 2592 ? Ss 02:43 0:00 /usr/bin/telnetd -E /bin/login -H <-- telnet@.serviceのExecStartで指定したコマンドが起動されている
> root 454 0.0 0.0 7412 2432 pts/0 S+ 02:48 0:00 grep telnet

のようにtelnetdが常駐しています。

この状態で、
systemctl status telnet.socketを行うとどうなりますか?

以前は

> systemctl status telnet.socket
> ● telnet.socket - Telnet Server Activation Socket
> Loaded: loaded (/usr/lib/systemd/system/
> telnet.socket; enabled; vendor preset: disabled)
> Active: active (listening) since Thu 2020-12-17 00:29:22 UTC; 6min ago
> Triggers: ● tel...@86-10.0.0.2:23-192.168.
> 11.11:52760.service
> Docs: man:telnetd(8)
> Listen: [::]:23 (Stream)
> Accepted: 87; Connected: 1;
> Tasks: 0 (limit: 9442)
> Memory: 1008.0K
> CGroup: /system.slice/telnet.socket

となっていましたが、これだとsystemdがtelnetを受け付けて、telnet.serviceで起動したtelnetdと衝突します。

この内どちらのtelnetdが正しく動くかの確認は
systemctl stop , sytemctl start でtelnet.serviceとtelnet.socketを一つづつ起動して行って下さい。

このとき、

ps aux | grep telnetd
systemctl status telnet.socket
systemctl status telnet.service 

などでtelnetdが衝突してない事を確認して下さい。

Message has been deleted

kku...@gmail.com

unread,
Dec 20, 2020, 4:57:13 AM12/20/20
to lightMPD
digififanさん
ありがとうございます。
Archlinuxでは

telnet.service は存在しません。
なので単体では起動出来ません。
(存在するのはtelnet.socketです。)
以下のファイルでxinetd側でのtelnetは起動しない様にしています。

$ cat /etc/xinetd.d/telnet

{
    flags            = REUSE
    socket_type        = stream
    wait            = no
    user            = root
    server            = /usr/bin/telnetd
    log_on_failure        += USERID
    disable            = yes

この状態で且つ telnet@.service で
ExecStart=-/usr/bin/telnetd -E "/bin/login -H" として
何とかログイン出来る状態です。

digififan

unread,
Dec 20, 2020, 8:04:06 AM12/20/20
to lightMPD
kkumaxさん

> telnet.service は存在しません。

すみません。まちがってました、telnet@.serviceのことです。
 
> この状態で且つ telnet@.service で
> `ExecStart=-/usr/bin/telnetd -E "/bin/login -H" として`
> `何とかログイン出来る状態です。`

この状態で、

systemctl stop telnet.socket

を行うとsystemd側でtelnetのポート(23)の監視を行わなくなるので、うまくいくと思います。

ちなみに telnet.socketの内容はどうなってますか?

kku...@gmail.com

unread,
Dec 28, 2020, 5:20:38 AM12/28/20
to lightMPD
もう一台Archlinuxをインストールして確認しました。
結論から
xinetdだけ使ってtelnetは使用出来る様にはなりません。
ただ設定ファイルは 
 disable            = yes となっていてもxinetdは動いている
必要がありそうです。

systemctl でtelnet.socketをenableにして且つ
telnet@.service を
ExecStart=-/usr/bin/telnetd -E "/bin/login -H" とするしか
無いようです。(自分の環境では!)

digififan

unread,
Dec 29, 2020, 10:07:25 AM12/29/20
to lightMPD
kkumaxさん

私が勘違いしてました。
systemdではtelnet.socketでtelnetの接続を監視し、接続を受け付けたらtelnet@.serviceで指定されたサービスを
起動するようです。 

> systemctl でtelnet.socketをenableにして且つ
> telnet@.service を
> `ExecStart=-/usr/bin/telnetd -E "/bin/login -H" とするしか無いようです。(自分の環境では!)`

が正しいです。
これでも、確実に接続できるようになりませんか?

systemdは上記のようにxinetdの機能があるので、xinetdは必要ないはずですが
 
> ただ設定ファイルは  disable            = yes となっていてもxinetdは動いている
> 必要がありそうです。

がよくわかりません。

以前ps の結果にtelnetdがあったのは多分telnetでログインされていたのかもしれません。


Reply all
Reply to author
Forward
0 new messages