telnetを使えるようにする。

Last Update: 2007/05/03
For FreeBSD 5.5


telnetを使えるようにする。

以下のinetd.confの変更にはviというFreeBSDでは付属でついてるエディタの操作知識が必要になります。
簡単なことだけ説明するので後の詳しい部分は自分で検索して下さい。
多少癖のある奴ですがデフォルトで入っているので他の*BSDなマシンを触る時に必要になるので覚えてといて損はないです。

簡単なviの操作知識
まず、viエディタにはコマンドラインモードと編集モードがあります。
起動直後はコマンドラインモードです。

 

結果

 備考

 移動  コマンドラインモードで←↑↓→   基本矢印キーだけどHとかKでもできる
 編集モードにする  コマンドラインモードでa  カーソルの右側に文字を入力
 編集モード
 →コマンドラインモード
 Esc  切り替わった時にピッ!と音がなる。
 保存  コマンドラインモードで:w  強制的にするには:q! !を付ける
 終了  コマンドラインモードで:q  強制的にするには:q! !を付ける
 保存して終了  コマンドラインモードで:wq  保存と終了のコマンドを一回でやっただけ

$su
#vi /etc/inetd.conf

suはrootになる為のコマンドです。パスワードが聞かれたらrootパスワードを答えてください。
#はrootで実行しているという意味なので覚えといてください。
すにで#となっている場合にはrootなのでsuを入力する必要はありません。

# $FreeBSD: src/etc/inetd.conf,v 1.69.2.1 2006/03/28 15:52:12 ceri Exp $
#
# Internet server configuration database
#
# Define *both* IPv4 and IPv6 entries for dual-stack support.
# To disable a service, comment it out by prefixing the line with '#'.
# To enable a service, remove the '#' at the beginning of the line.
#
#ftp    stream  tcp      nowait  root     /usr/libexec/ftpd       s ftpd -l
#ftp    stream  tcp6     nowait  root     /usr/libexec/ftpd       ftpd -l
#ssh    stream  tcp      nowait  root     /usr/sbin/sshd           sshd -i -4
#ssh    stream  tcp6    nowait  root     /usr/sbin/sshd           sshd -i -6
#telnet  stream  tcp    nowait  root     /usr/libexec/telnetd    telnetd
#telnet stream  tcp6    nowait  root    /usr/libexec/telnetd    telnetd

#telnet stream tcp nowait root /usr/libexec/telnetd telnetd の部分を
telnet stream tcp nowait root /usr/libexec/telnetd telnetd
のようにして先頭部分の#を外します。
その後上書き保存Esc(コマンドラインモードにする)→:wqを入力

次はinetdを有効にする
#vi /etc/rc.conf

このファイルの一番下のinetd_enable="YES"を加える。
# -- sysinstall generated deltas -- # Wed May  2 22:54:01 2007
ifconfig_lnc0="DHCP"
hostname="bsd.localdomain" 
inetd_enable="YES"

次に再起動させてinetdを起動させる。
#shutdown -h now 


再起動後inetdが起動しているか調べる
$ ps axf |grep inetd
  455  ??  Is     0:00.02 /usr/sbin/inetd -wW -C 60
  693  p0  S+     0:00.02 grep inetd
$ 
このようになっていれば無事起動している。

次に接続するためにIPを調べる
$ ifconfig
lnc0: flags=108843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        inet6 fe80::20c:29ff:fed3:6720%lnc0 prefixlen 64 scopeid 0x1
        inet 192.168.1.7 netmask 0xffffff00 broadcast 192.168.1.255
        ether 00:0c:29:d3:67:20
plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
        inet 127.0.0.1 netmask 0xff000000
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
$
この場合lnc0というインターフェース(NIC)に192.168.1.7というIPが振られている。
ちなみにこいつはWMware PlyaerのNICだったりする。



こいつのIPが分かったので今度はwindows側から接続してみる
コマンドプロンプトを出してtelnet 192.168.1.7を入力する。

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\WINDOWS\system32>telnet 192.168.1.7


62.jpg

ちなみにrootでloginはできないのでもし入って外部から操作したい場合にはuserを作ってください。
というかそもそもすべてのこと自体をrootでするのは非常に危険です。

inetd の役割について
たとえば鯖で色々なサービス(例えばFTPとかSMPT POP3とか)を動かしたい場合があるとしましょう。
その時にサービスがポートを見張るだけに起動しているとメモリとCPUパワーを必要とします。
それだといいことがよろしくないので、そこでinetdの出番です。
inetdという1つのプロセスでinetd.confに書いてあるサービスのポートを見張って
クラアントからの通信が来た場合にのみそのポートのサービスを実行します。
これによって、たくさんのポートを監視するためだけに、多くのプロセスを必要としなくなったのです。
実験
$ ps axf  |grep telnetd
    516  p0  R+     0:00.01 grep telnetd
$ 
まず、telnetとかリモートで操作しないで直接loginしたら
telnedというサービスが起動してないか確かめてみましょう。
この場合は自分が検索したgrep telnetdしか無いことが分かります。

それが確認できたらそのマシンにtelnetでloginしてみましょう。
$ telnet localhost
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Trying SRA secure login:
User (tanaka): ^Z[1] + Suspended               telnet localhost
$ 
Ctrl+z を押してサスペンド(中断)させます。

$ ps axf |grep telnetd
  560  ??  Ss     0:00.10 telnetd
  564  p0  R+     0:00.01 grep telnetd
$ 
次にもう一回telnetdというサービスが起動してないか試してみましょう。
今度はtelnetdというサービスが起動しているのが分かると思います。
このようにして必要な時にだけサービスを起動させています。



余談だがlnc0というのは刺さっているネットワークカードによって変わる。
ついでにうちの他のマシン(こいつはリアルマシンね)の奴はIntel製のNICでこんな感じ。
%ifconfig
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=8<VLAN_MTU>
        inet 192.168.1.13 netmask 0xffffff00 broadcast 192.168.1.255
        inet6 fe80::240:caff:fe1d:9d1f%fxp0 prefixlen 64 scopeid 0x1
        ether 00:40:ca:1d:9d:1f
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
        inet 127.0.0.1 netmask 0xff000000
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
%
この場合はfxp0というインターフェース(NIC)に192.168.1.13 が与えられている。

他のNICの表記については
#/usr/src/sys/i386/conf/GENERIC
のNICの所に書いてあります。

# PCI Ethernet NICs that use the common MII bus controller code.
# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
device          miibus          # MII bus support
device          bfe              # Broadcom BCM440x 10/100 Ethernet
device          bge              # Broadcom BCM570xx Gigabit Ethernet
device          dc               # DEC/Intel 21143 and various workalikes
device          fxp              # Intel EtherExpress PRO/100B (82557, 82558)
device          lge              # Level 1 LXT1001 gigabit ethernet
device          nge             # NatSemi DP83820 gigabit ethernet
device          pcn             # AMD Am79C97x PCI 10/100 (precedence over 'lnc')
device          re               # RealTek 8139C+/8169/8169S/8110S
device          rl               # RealTek 8129/8139
device          sf              # Adaptec AIC-6915 (``Starfire'')
device          sis             # Silicon Integrated Systems SiS 900/SiS 7016
device          sk              # SysKonnect SK-984x & SK-982x gigabit Ethernet
device          ste            # Sundance ST201 (D-Link DFE-550TX)
device          ti               # Alteon Networks Tigon I/II gigabit Ethernet
device          tl               # Texas Instruments ThunderLAN
device          tx              # SMC EtherPower II (83c170 ``EPIC'')
device          vge            # VIA VT612x gigabit ethernet
device          vr              # VIA Rhine, Rhine II
device          wb             # Winbond W89C840F
device          xl              # 3Com 3c90x (``Boomerang'', ``Cyclone'')