December 27, 2009

Ubuntuでpppoe-serverを使ってPPPoEサーバを立てる












Ethernet環境は基本的に手元にあるケーブルを目の前のPortにカチッとするだけで構築可能ですが、PPPoEはどうでしょうか?ISPへ接続している回線を使えばよいのですが、検証用にはそんなに簡単に用意が出来ません。ですので、この場合も手元でPPPoEサーバを立ち上げましょう。





PPPoEとは。

詳細な難しい話は別途ググッっていただければよいので、かいつまんで説明すると。。。











クライアントが同一セグメント内のPPPoEサーバとのやり取りで、PPPoEのリンクを生成します。サーバとのPAPあるいはCHAPなどの認証を経てIPアドレス情報などを得て、PPPoEのリンクに接続します。

具体的な構成図は上記、設定例は下記を参照。PPPoEサーバにはいつもの通りUbuntuを使用します。





まずは、必要なパッケージをインストール。えっと確か、、、





$ sudo apt-get install pppoe






だったと思います。

そして、クライアントとのやり取り情報を設定します。ここでは、DNSと認証方式くらいを気にしておいてください。





$ sudo vi /etc/ppp/pppoe-server
ms-dns 8.8.8.8
ms-dns 8.8.4.4
require-pap
login
lcp-echo-interval 30
lcp-echo-failure 4






認証情報をセットしておきましょう。





$ sudo vi /etc/ppp/pap-secrets
test * "test" 192.168.1.100






PPPoEサーバ側に、PPPoEサーバのインターフェースを作成します。ここではeth1をそれとしますが、Staticにeth1にIPアドレスは設定しないでおいてください(詳しくは、man pppoe-server参照)。各オプションについても、man pppoe-serverを(ry 。ここではPPPoEクライアントのIPアドレスが192.168.1.100になる見込みです。





$ sudo pppoe-server -I eth1 -L 192.168.1.1 -R 192.168.1.100






PPPoEサーバがルータとしてパケット転送を行うために、下記に1を入れておいてください。





$ echo 1 > /proc/sys/net/ipv4/ip_forward






Source NATするなら、IPTablesを利用します。





$ sudo iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.0.3






ClientにPPPoE Discoveryさせてください。PPPoEのリンクは出来ましたか?想定していたIPアドレスはセットされましたか?あて先のHostとの通信は出来ましたか?PPPoEサーバでパケットキャプチャしてみて確認してみてください?

設定例はここまで。気が向いたら解析編でもそのうち書きます。


November 11, 2009

Ubuntu 9.04 JauntyでIPv6を無効(disable)にしたい









Ubuntu 9.04 JauntyでIPv6を無効(disable)にする方法をググっていたのですが、だいたい下記のような内容が大半ですが、これがうまくいきません。





$ sudo echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6
$ sudo vi /etc/sysctl.conf
---vi editing---
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
----------------
$ sudo sysctl -p

# 確認
$ ip a | grep inet6
$ ifconfig | grep inet6
$ cat /proc/net/if_inet6






Ubuntu系のコミュニティを探してみると、同じようなケースを発見。どうやらKernelのBugのようでした。





[Kubuntu] Disable IPv6 in Kubuntu

http://ohioloco.ubuntuforums.org/showthread.php?t=1140536





Actually this is a kernel bug: https://bugs.launchpad.net/bugs/351656
So we will need to wait until the next kernel update.






そのBug#351656を見てみると、やはり上記の方法だと、期待通りにIPv6が無効にならないと書いてあります。






Bug Description

SRU Justification:

Impact: The method to disable IPV6 in Jaunty does not work, which does not allow systgem administrators to disable it on specific systems.

Fix: Patch from upstream which fixes the disable_ipv6 method.

Testcase: Try to disable ipv6 for a system with echo 1 >/proc/sys/net/ipv6/conf/all/disable_ipv6

=====

When using sysctl to disable IPv6, it doesn't work. The command I used is the following:
sysctl -w net.ipv6.conf.all.disable_ipv6=1

Looking around it seens this a bug in the linux kernel, which already has a fix, as described here: http://patchwork.ozlabs.org/patch/24127/

Please, backport this patch so IPv6 can easily be disabled on Jaunty!

I'm running Jaunty beta, updated as of 29/03/2009. Any details needed I'll be glad to provide.






Ubuntu 9.10 (Karmic)のKernelのバージョンでは影響がありません。このBug FixはKernel 2.6.28-15.52のupdateに含まれます。

今のKernelのバージョンは・・・





$ uname -a
Linux ubuntu 2.6.28-11-server #42-Ubuntu SMP Fri Apr 17 02:48:10 UTC 2009 i686 GNU/Linux


どうやらupgradeの必要があるようです。





Kernelのアップデートを行います。

$ sudo apt-get dist-upgrade
...
# 確認
$ cat /boot/grub/menu.lst


Kernelのアップデートが完了しました。menu.lstにもエントリーが追加されています。





IPv6のDisableをEnableするために、menu.lstのkernel行の末尾にでも"ipv6.disable=1"を書き加えましょう、下記のように。その後は再起動です。

$ sudo vi /boot/grub/menu.list
--- vi editing ---
title Ubuntu 9.04, kernel 2.6.28-16-server
uuid 85c0cc4b-b676-4988-9943-8c0867cacb1e
kernel /vmlinuz-2.6.28-16-server root=/dev/mapper/kt--ubuntu-root ro console=tty0 console=ttyS0,9600n8 quiet splash ipv6.disable=1
initrd /initrd.img-2.6.28-16-server
quiet
------------------
$ sudo shutdown -r now
...

# 確認
$ ip a | grep inet6
$ cat /proc/net/if_inet6
cat: /proc/net/if_inet6: No such file or directory
$ netstat -lntu # tcp6等でlistenしてない事を確認






この書き込みによると、/etc/rc.localでifconfigを実行しておくことでIPv6を無効化する方法も紹介されていました。

IFACE='eth0'
IPV6=`ifconfig $IFACE | gawk '/inet6/ {print $3}'`
ifconfig $IFACE inet6 del $IPV6






いかがでしょうか?

June 18, 2009

FreeRADIUSの設定





FreeRADIUSは、Linux等で動く、FreeのRADIUSサーバです。(なんて単純な説明だ・・・ガッカリ。。。)


今回、UbuntuでFreeRADIUSを立ち上げてみたので、その時のメモです。


▼インストールされていなければ、あらかた入れておきましょう。


# sudo apt-get install freeradius freeradius-mysql



▼-X で、debug modeで起動します。起動させたコンソールは、debugログのモニターになります。これだとフォアグラウンドで動くので、終了させたければ Ctrl + C しましょう。


$ sudo radiusd -X



基本的な設定は、このサイトを参考にしました。ありがとうございます。
設定ファイルは、 /etc/freeradius にありました。


▼初期段階なので、暗号化なしで、testユーザにパスワード設定します。


# End of /etc/freeradiususers

"test" Cleartext-Password := "testPass123"



▼listenするIP addressを適切に設定しましょう。ipaddrは2か所ありました。

# In /etc/freeradius/radiusd.conf

ipaddr = 192.168.0.1



設定変更したら、radiusd を再起動し、コンソールをもうひとつ開いて以下。


# From client console

$ radtest test@LOCAL testPass123 127.0.0.1 1 testing123

June 12, 2009

syslogを外部syslogへ転送するシンプルな方法





Linuxでsyslogを外部のsyslogサーバ(ログ管理アプライアンス)に飛ばす時に調べた時のメモ。


  1. Linuxにsyslogがあることを確認(普通あります)
  2. syslog.confに該当ログの出力先を"@loghost"とする
  3. hostsにloghostのエントリーを作成する
  4. syslogdを再起動
  5. tcpdumpを確認用に起動
  6. loggerでsyslog動作の確認


▼参考例

/etc/syslog.conf
--------------------
local7.notice @loghost


/etc/hosts
--------------------
192.168.100.1 loghost

tcpdump
--------------------
tcpdump -n port 514


logger
--------------------
logger -p local7.notice -s test -s "This is test log from me."



Google Docsにする必要なかったですが、私の簡単な理解イメージを、試しに使って書いておきます。
Application(logger含む)からローカルで受け取ったメッセージを、syslogdがローカルのログ(/var/log/* など)やUDPで外部へ転送できる、ということです。




Windowsのフリーsyslogサーバは、コレ↓がおすすめらしい。妻が言っていました。
Kiwi Syslog Server

March 31, 2009

httpingでHTTPサーバへポーリング





HTTPサーバへポーリングする際に、ICMPが使えないことってありませんか?
あるいはTCP80ポートでちゃんと仕事してるか、チェックしたくないですか?
そういう時に、httpingというコマンドが有効かもしれません。
そのネーミングはシャレかと・・・。

$ sudo apt-get install httping
(snip)
$ httping -g http://hogeo.jp/ -c 5
PING hogeo.jp:80 (http://hogeo.jp/):
connected to hogeo.jp:80, seq=0 time=49.89 ms
connected to hogeo.jp:80, seq=1 time=135.40 ms
connected to hogeo.jp:80, seq=2 time=51.43 ms
connected to hogeo.jp:80, seq=3 time=82.42 ms
connected to hogeo.jp:80, seq=4 time=62.31 ms
--- http://hogeo.jp/ ping statistics ---
5 connects, 5 ok, 0.00% failed
round-trip min/avg/max = 49.9/76.3/135.4 ms



んで、パケットキャプチャしたのが下記。前半部分がhttpingからのリクエスト。後半部分がHTTPサーバからのレスポンス。


HEAD http://hogeo.jp/ HTTP/1.0
User-Agent: HTTPing v1.2.3
Host: hogeo.jp

HTTP/1.1 200 OK
Date: Wed, 01 Apr 2009 07:29:24 GMT
Server: Apache
Last-Modified: Thu, 29 May 2008 23:36:30 GMT
ETag: "a6000b-135d-483f3dfe"
Accept-Ranges: bytes
Content-Length: 4957
Connection: close
Content-Type: text/html



ん、Content-Lengthが4957byte?どこにそんなRequest Bodyがあるんすか・・・。


$ httping -V
HTTPing v1.2.3, (C) 2003-2005 folkert@vanheusden.com
SSL support included


SSLもサポートしてるようです、ほうほう。