読者です 読者をやめる 読者になる 読者になる

メモ的ななにか

@Maleic1618

Raspberry Piをルーター&DHCPサーバーにしようとしてできなかった話

自分用のログなので悪しからず.

事の発端

今まで使っていたBuffalo製のルーターが壊れたので新しいものを買うことになったのですが,違う会社のルーターも使ってみるかということでNEC製のルーターを買いました.

これが大外れでPPTPサーバーの機能はないしログ出力もない.というわけでこれはブリッジ専用機にしてRaspberry Piルーター&DHCPサーバーにすることにしました.こうすればWebサーバーにするときも楽そうだしPPTPサーバーも簡単に追加できそうですからね.

とりあえず以下のような構成にしたい.

(the Internet)
      |
      |
(Raspberry Pi)
      |
      |
(ゴミルーター)←ブリッジモード
      |
      |←無線
(PC, iPad, etc..)

…というわけでRaspberry Piのデータを全部消してあれこれやったのですがうまくいってません.以下そのログ.

初期設定

Raspbianの公式サイトにOSのイメージファイルがそのまま置いてあるのでこれをSDカードに展開します. SSHを使ってusername:pi password:raspberry でログインできるはず. SoftPerfect Wi-Fi Guardとかを使えばRaspberry PiのIPはわかる.

rootのパスを変更し,さらにユーザーを追加.visudo で追加した一般ユーザーがsudo出来るようにする.その後piは削除.SSHではrootにはアクセスできないので注意.

$ sudo passwd root
$ sudo adduser [username]
$ visudo

(new userに切り替えて)

$ sudo userdel -r pi

アップデートと必要なソフトだけインストールする.DHCPサーバーはdnsmasqを使う予定.

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt install vim dnsmasq dnsutils netfilter-persistent

あれこれの設定

IPは次のようにしたい.(よくわかってない)

  • Raspberry Piのthe Internet側のIPは192.168.122.1,LAN側のIPは192.168.122.2

  • DHCPの割り当て範囲は192.168.122.10-30

とりあえずRaspberry PiのIP固定をする.

/etc/network/interface

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.122.1
network 192.168.122.0
netmask 255.255.255.0
broadcast 192.168.122.255
gateway 192.168.0.1

auto eth1
iface eth1 inet static
address 192.168.122.2
netmask 255.255.255.0
gateway 0.0.0.0

eth0がthe Internet側,eth1がLAN側(ゆくゆくはブリッジモードのルーターにつなぐ側) gatewayがよくわかってないのでここがなんか問題な気がする.要見直し.

次にiptablesの設定.

$ sudo iptables -A FORWARD -i eth1 -s 192.168.122.0/24 -m conntrack --ctstate NEW -j ACCEPT
$ sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$ sudo iptables -t nat -A POSTROUTING -s 192.168.122.0/24 -j MASQUERADE
$ sudo iptables-save
$ sudo /etc/init.d/netfilter-persistent save
$ sudo /etc/init.d/netfilter-persistent restart

dnsmasqの設定.とりあえずデフォルトの設定ファイルが長いので別のファイルも設定ファイルにするように設定.

/etc/dnsmasq.conf

conf-file=/etc/dnsmasq.more.conf

/etc/dnsmasq.more.conf

interface=eth1
dhcp-range=192.168.122.10,192.168.122.30,12h
dhcp-option=option:dns-server,192.168.122.2,8.8.8.8
dhcp-option=option:router,192.168.0.1
dhcp-leasefile=/var/lib/misc/dnsmasq.leases
log-dhcp

これ大丈夫なんですかね.logは/var/log/syslogに出るはず. 最後に起動時にdnsmasqをロードするように設定

$ sudo systemctl dnsmasq enable

参考:

dnsmasq - ArchWiki

ここまでやって再起動. eth0とthe Internet,eth1を適当なPCにつないだけどダメっぽかった. ログは読んだけどよくわからなかった.

とりあえずここまで.

LXCコンテナのネットワーク設定

友人に教えてもらいながらあれこれいじったらつながったので,やり方をまとめておきます.

使っているのはDebian jessieです.

コンテナは既に作成できているとして進めます.

ブリッジを作成する

nm-connection-editorを使いました.

(MATEの場合はパネルのシステム-設定-ネットワークの設定でもOK)

追加ボタンからブリッジを作成し,編集でIPv4のセッティングを開き,方式を手動に変更. アドレスを追加して以下のように設定.

アドレス:192.168.122.1

ネットマスク:255.255.255.0

ゲートウェイ:0.0.0.0

コンテナ側のネットワーク設定

/var/lib/lxc/myjessie/下の以下のファイルをいじります.

  • config
  • rootfs/etc/network/interfaces
  • rootfs/etc/resolv.conf

以下を追加. config:

lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.ipv4 = 192.168.122.2/24
lxc.network.ipv4.gateway = 192.168.122.1

/rootfs/etc/network/interfaces:

auto eth0
# iface eth0 inet dhcp
  iface eth0 inet static
  address 192.168.122.2
  netmask 255.255.255.0
  network 192.168.122.0
  broadcast 192.168.122.255
  gateway 192.168.122.1

/rootfs/etc/resolv.conf:

nameserver 8.8.8.8

*1

ホスト側の設定

ここまでやればホストとコンテナはつながっているので*2,コンテナが外にアクセスできるようにします.

まずetc/sysctl.confの次の行のコメントアウトを削除.

#net.ipv4.ip_forward=1

その後,iptablesでNATを以下のように設定. 予めnetfilter-persistentをインストールしておくこと.

% sudo iptables -A FORWARD -i br0 -s 192.168.122.2/24 -m conntrack --ctstate NEW -j ACCEPT
% sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
% sudo iptables -t nat -A POSTROUTING -s 192.168.122.2/24 -j MASQUERADE
% sudo iptables-save
% sudo /etc/init.d/netfilter-persistent save
% sudo /etc/init.d/netfilter-persistent restart

これでコンテナから外にアクセスできると思います.

参考

以下の記事を参考にさせていただきました.ありがとうございます.

NetworkManager で仮想環境用に bridge を作成

おまけ:コンテナにpingをインストール

コンテナにpingがインストールされてなくて,困っている方も多いのではないでしょうか.コンテナのネットワークが設定できていなくても,chrootを使えばインストールできます.*3

% sudo chroot /var/lib/lxc/myjessie/rootfs
% apt-get install iputils-ping

*1:8.8.8.8はGoogleDNSサーバーです.

*2:pingを飛ばす場合はホスト→コンテナは192.168.122.2へ,コンテナ→ホストは192.168.122.1(=gateway)へ飛ばして確認します.

*3:chrootはネットワーク設定を変えないことを利用して,ホストのネットワーク設定を使ってインストールしています.

セミナー予習のやり方

なんとなく書く.参考になれば.

  1. とりあえず予習するつもりの範囲をさーっと読む.定理の証明は追わずに主張だけをみてどういう流れで何を示すのかを把握する.
  2. もう一回最初から証明も含めて読む.読んで詰まるところは?マークをつけて飛ばす.
  3. ?マークの場所を考える.1つだけに時間をかけるのではなくまんべんなく.
  4. ノートの清書とかをする.

全体の流れを掴んでから考えるほうが行間も埋まりやすくなる場合もあるし,補題や定理を考える意味がわかりやすくなって発表時の構成が考えやすいのでよいと思います.

発表時は以下の2点に気をつけてます.

  1. 最初にどういう流れで何を示すのかを説明する.聞く人は発表範囲を読んでいるのでざっくりとした説明でOK.
  2. 発表内容は基本的に全て暗記する.たまにノートを見るのはしょうがないけどずっとノート見ながら板書するのとかは避ける.
  3. 分からなかった場所をはっきりと聞く.聞くは一時のなんちゃらってやつです.

ヒーローシューターの紹介

今回は昔やっていたFPSスプラトゥーンの話をしようと思います.

自分はしばらく前にやめてしまったのですが,先日友人の家に行った時に彼のWiiUでプレイさせてもらう機会がありました.その際,自分のお気に入り武器のヒーローシューター(無印スプラシューター)が全然使われてなかったのでこの記事を書くことにしました.

元々動画を作ろうと思っていて内容は貯めてたので,それを元に書いていこうと思います.

続きを読む

pythonのパッケージのインストール

まず,Pythonのパッケージ管理システムpipをインストールする.pythonが入っていればそれを使ってインストール出来るらしい.適当な場所にhttps://bootstrap.pypa.io/get-pip.pyをダウンロード.linuxであれば

wget https://bootstrap.pypa.io/get-pip.py

でOK.

これをpythonで実行すればインストールされる.sudo権限が必要なので忘れずに.

パッケージインストールは

sudo pip install [パッケージ名]

でOK.昔はeasy_installとかなんとかやってたけど今は必要ないらしい.便利になったなあ.

 

emacsを導入したので覚え書き

友人・先輩に手伝ってもらったので,他のPCにインストールするときようにメモを残しておく.

 

emacs自体は

sudo apt-get install emacs

でインストール出来る.

自分はパッケージが見つからない的なことを言われたので,

/etc/apt/sources.listを見てみると以下の文があってエラーになっているようだったので削除.

deb http://backports.debian.org/debian-backports squeeze-backports main

だいぶ前のバージョンのパッケージリストも参照していたみたい.なんで入ってたのかはよくわかりませんでした.

sudo apt-get update

sudo apt-get install emacs 

でインストールできた.

あとOSをインストールした直後はmakeコマンドが入ってないときがあるので,その場合は忘れずにapt-get installしとえくこと.

 

次に友人オススメのemacsあれこれをインストールする.まず設定フォルダの初期化をするために一旦emacsを起動してすぐ終了.そして.emacs.dフォルダにemacsの初期化ファイルinit.elを作成する.

touch init.el

emacs init.el

これにいろいろ書くことでパッケージのインストール及び初期化をやってくれる.他のPCに同じ環境を作る時もパッケージのインストールをまた新たにやる必要はなくinit.elを移すだけでいいらしい.

 

 

以上.

数学科の人にお勧めしたい数学書

調べるといろんな人がお勧めの数学書を書いているけれど,自分が読んでいた本がほとんど挙げられていなかったので書いてみることにしました.

ちなみに筆者の専門は複素幾何です.

(ほとんど)読んでないけど良さげだなと思ったり良い評判を聞いてる本は(*)付きで書いています.

勉強する本を選ぶときの参考になれば.

続きを読む