ちまたで、流行りのスモールLinuxマシン、Raspberry Piを購入しました。
Amazon(クリックしてね)で売ってます。
自分は、FreeBSD派なので、Linuxに対して、ちょっと反発があったのですが、そこは、おもしろいものに興味を惹かれるのは、人情というもの
コストの低さもあいまって購入しました。
まー、Linuxに反発があったっていうのも、そんなこと無いんですけどね
なんせ、メイン機のOSは、Ubuntuにしてから、もう半年以上たってしまって、Windowsなんか使わなくってもええやん的な状態になってます。
FreeBSDとLinuxでは、コマンドやディレクトリツリーが違うので、ちょいと悩むことがあったりしますが、基本UnixライクOSなんで、そんなに問題になりませんよ
使うソフトも同じようなもんですからね
しかも、LinuxだとWine環境がすぐれすぎていて、ちょっとしたWindowsアプリなんか動きますからね
と、横道にそれましたが、本題に戻しましょう。
そもそも、なんでRaspberry Piを購入したかというと、うちのADSLな環境で、なんとかIPv6を導入したいと思っていて、色々、試したり調べたりしていても、なかなか思いに叶う物がありませんでした。
最低限のルールとして、低消費電力、静粛性、2ポートLAN装備、低コストでした。
これらを満たしたのがRaspberry Pi Type Bでした。
IPv6にする方法としては、IPv6 over IPv4です。
普通、こんなことが出来るルーターは、なかなか見つかりません。
まー、あったとしても高かったりとかで、そういうのは、ちょっと違いますよね。
しかし、Raspberry Piは、Linuxが使えるので、なんら問題ありません。
問題は、LANポートだけです。
LANポートは、USBタイプのLANを買ってきてつければいいやってことで、OKでしょ。
IPv6ルーター兼、IPv4 NATルーターを構築することにしてみましょう。
とりあえず、要るもの一覧です。
・Raspberry Pi Type B
・SDCARD 4G <= 2Gでも可
・PLANEX UE-100TX-G3 (内蔵チップが、ASIX社 AX88772だと、他でも良いでしょう)
・適当なUSB電源
・必要な方は、ケースも
・TunnelBrokerのアカウントとトンネル(これは、無料なんで、とにかくゲットしといて下さい)
Raspberry Piは、現在、いくつかのOSを起動できます。
その中でも、今回は、コンパクトかつ実用性抜群のArch Linuxを使うことにしました。
それでは、始めましょう
まず、Arch Linuxのインストールですが、これは、他のサイトを適当に参考にして入れて下さい。
LANは、基盤のLAN(eth0)をインターネットに繋いで、USBにて増設した方をプライベート(eth1)とします。
しっかり、Arch Linuxが起動して、Rootになったところで、行きましょう
まず、http://tunnelbroker.net/で、トンネルを作って必要な情報をゲットしておきましょう。
Server IPv4 Address
Client IPv6 Address
Routed /64
Anycasted IPv6 Caching Nameserver
Routed /64を使った自己アドレスを決める
{
例えば、Routed /64が、2001:400:20:a2::/64であれば、プライベートアドレスとして、2001:400:20:a2::1/64と決めることです。
}
が、必要です。
1.
パッケージを最新にします。
pacman -Syu
2.
ロケールを日本に設定しましょう。
vi /etc/locale.gen
ja UTFのコメントを外す
locale-gen
ln -sf /usr/share/zoneinfo/Japan /etc/localtime
3.
ssh.d有効化しないと、ネット経由ではいれませんよね。
systemctl start sshd.service
セキュアな設定をします。
/etc/ssh/sshd_config
UsePAM no
PermitRootLogin no
PasswordAuthentication no
ChallengeResponseAuthentication no
PermitEmptyPasswords no
RhostsRSAAuthentication no
4.
3でSSH経由で接続出来ますが、Rootでは接続できなくしています。
なので、通常のユーザを追加して、このユーザにSSHにてログインしましょう。
useradd [ユーザ]
mkdir /home/[ユーザ]
chown [ユーザ]:[ユーザ] /home/[ユーザ]
passwd -e [ユーザ]
passwd [ユーザ]
作ったユーザのホームに.sshに必要なファイルを作成する
authorized_keys
id_rsa
これは、「ssh authorized_keys 作成」とかっていうのをGoogleで検索してなんとかして下さい。
5.
いよいよ、IPv6を有効にしてみましょう。
/boot/cmdline.txt
ipv6.disable=0
6.
SSHで接続できるのは、良いですが、ルーターにするのにDHCPじゃ不便ですよね。
固定IPを設定しましょう。(192.168.0.1としますよ)
pacman -S netctl
/netctl/eth1
Description='A ethernet connection'
Interface=eth1
Connection=ethernet
IP=static
Address=('192.168.0.1/24')
ExecUpPost='sysctl -p /etc/sysctl.conf'
IP6=static
Address6=('[----Routed /64を使った自己アドレス----]')
作成した設定を有効にしましょう。
netctl enable eth1
netctl start eth1
7.
普通にNatルーターとしても使いたいので、設定しましょう。
ポート80にアクセスされると、192.168.0.90に飛ぶように設定してます。
pacman -S iptables
iptables -t nat -F
iptables -t filter -F
iptables -t nat -A POSTROUTING -s 192.168.0.1/24 -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 -j DNAT --to 192.168.0.90:80
iptables -N sshguard
iptables -A INPUT -p tcp --dport 22 -j sshguard
iptablesの状態をファイルに保存しましょう
iptables-save > /etc/iptables/iptables.rules
作成した設定を有効にしましょう。
systemctl enable iptables.service
systemctl start iptables.service
8.
次に、IPをレリーするように設定します。
/etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
net.ipv6.conf.all.accept_ra=0
9.
最後にIPv6のルーターを起動しましょう。
/etc/radvd.conf
interface eth0
{
AdvSendAdvert on;
MinRtrAdvInterval 3;
MaxRtrAdvInterval 10;
AdvDefaultPreference low;
AdvHomeAgentFlag off;
prefix [-----Routed /64----]
{
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr off;
};
};
起動します
systemctl enable radvd
systemctl start radvd
10.
まだありました、肝心のトンネルを作ります。
/etc/netctl/tunnelbroker
Description='ipv6 tunnel with tunnelbroker'
Interface=he-ipv6
Connection=tunnel
Mode='sit'
Remote='[----Server IPv4 Address----]'
IP6=static
Address6='[----Client IPv6 Address----]'
Routes6=('::/0')
この設定を有効にしましょう
netctl enable tunnelbroker
netctl start tunnelbroker
11.
もし、自身の環境が固定IPでは無い場合、以下のスクリプトをcronでまわしてみて下さい。
----の中身は、TunnerlBrokerの情報に置き換えて下さいね
/sbin/wget --no-check-certificate https://[----Username----]:[----Password----]@ipv4.tunnelbroker.net/n
ic/update?hostname=[----Tunnel ID----]
後は、リブートしてみて下さい、きっと ipv6.google.comが、他のPCで、見れるはずですよ
ちなみに、IPv4のNAT環境だと、DHCPサーバとDNSを構築しておかないと、困ると思うんで、それは、また、今度ということで・・・・