L2TP/IPsec 設定変更 for Android7

投稿日: Leave a comment

RTX810へのVPNがXperia Z1fではつながるが、X compactではつながらず、設定を見直した。

ヤマハのサイトを見るとクライアントによって認証アルゴリズムと暗号化アルゴリズムに対応・非対応があり、今までの設定 (認証 MD5、暗号化 3DES)では、古めのAndroid (2.3.3)では対応していて、現行(よりちょっと前)のiPhone/iPadでは非対応らしい。

これを変えることでつながるようになった。

ちなみに、両方ともSHA256で Android 4.4.2 (Z1f)、Android7.0 (X compact) のVPNで接続OKだった。

PPPoE + DS-Lite with RTX810 (2)

投稿日: Leave a comment

PPPoEとDS-Liteを同時接続した状態でVPN接続するとRTX810が落ちる件、これまでは特定のホストからのパケットをPPPoEに流していたのを、逆に特定のホストのみDS-Liteに流すようにしたところ、リセットしなくなった。

configとしてはこんな感じ。

ip routing on
ip route default gateway pp 1 filter 500001 500002 500003 500004 500005 500006 500007 gateway tunnel 1
ip route default gateway tunnel 1 filter 500008 gateway pp 1
ip filter 500001 pass 192.168.100.1 * * * *
ip filter 500002 pass 192.168.100.2 * * * *
ip filter 500003 pass 192.168.100.240 * * * *
ip filter 500004 pass 192.168.100.241 * * * *
ip filter 500005 pass 192.168.100.242 * * * *
ip filter 500006 pass 192.168.100.243 * * * *
ip filter 500007 pass 192.168.100.244 * * * *
ip filter 500008 pass 192.168.100.33-192.168.100.96 * * * *

ip filterの500008を追加して、これに合致したパケットのみDS-Liteに流すようにした。

ちなみにヤマハにも問い合わせを出しているけどい半年近くたってまだ回答無し。一度状況確認してみたがわからないといっていたから、結構根が深い問題なのかな。

RTX810でDS-Lite

投稿日: Leave a comment

IIJから発表されたDS-Lite (Dual-Stack Lite,数年前のIPv6 over IPv4 のトンネルの逆でIPv6ネイティブな環境で IPv4 over IPv6 のトンネルを掘って IPv4 を通すトンネル技術)を,以下を参考にRTX810でつないでみた.

続きを読む RTX810でDS-Lite

DHCPの設定を変更

投稿日: Leave a comment

家庭内LANのDHCPサーバー(IPv4)の設定を変更した.

DHCPサーバーはRTX810で動いているのでRTX810の設定.

これまでは,192.168.100.0/24 の範囲でMACアドレス指定で固定的に割り当てていたが,その範囲を有線・無線・機種等で分けて,ついでに,既知の端末と未知の端末(ゲスト)でサブネットを分けて,ゲスト用サブネットからLAN内の他のサブネットへの通信を遮断するようにした.

subnet-1 [192.168.100.0/24]:既知の端末用のネットワーク

  • 192.168.100.1: RTX810のLAN1ポート (プライマリアドレス)
  • 192.168.100.2-16: サーバー用 (固定割り当て)
  • 192.168.100.17-32: 実験用 (固定割り当て)
  • 192.168.100.33-64: DHCP (有線)
  • 192.168.100.65-128: DHCP (無線)
  • 192.168.100.129-192: DHCP (その他家電など)
  • 192.168.100.193-254: DHCP (半固定用*1)
    *1) DHCPサーバーからネットワークアドレスだけ取得して下位1octetを固定でふるやつ.最近増えてきた.

subnet-2 [192.168.1.0/24]:ひかり電話ルーター配下のサブネット (SIP用)

  • 192.168.1.1: ひかり電話のルーター
  • 192.168.1.254: RTX810のLAN2ポート

subnet-3 [192.168.255.0/24]:ゲスト用ネットワーク

  • 192.168.255.1: RTX810のLAN1ポート (セカンダリアドレス)
  • 192.168.255.2-16: 固定 (192.168.{1,100}.0/24アクセス不可)
  • 192.168.255.17-32: DHCP (192.168.{1,100}.0/24アクセス不可)

configはこんな感じ.

※100003を入れ忘れてLANからRTX810に入れなくなり,途中からシリアルコンソールで設定.
※あとからIPv6でつなげば設定できることを思い出した...

ip lan1 address 192.168.100.1/24
ip lan1 secondary address 192.168.255.1/24
ip lan2 address 192.168.1.254/24
ip filter 100001 reject-nolog 192.168.255.0/24 192.168.100.0/24 * * *
ip filter 100002 reject-nolog 192.168.255.0/24 192.168.1.0/24 * * *
ip filter 100003 pass * * * * *
ip lan1 secure filter in 100001 100002 100003
dhcp scope lease type 1 bind-only fallback=2
dhcp scope 1 192.168.100.33-192.168.100.254/24
dhcp scope bind 1 192.168.100.33 XX:XX:XX:XX:XX:XX
 : (略)
dhcp scope bind 1 192.168.100.254 XX:XX:XX:XX:XX:XX
dhcp scope 2 192.168.255.33-192.168.255.254/24

ipv4はこれでいいが,ipv6はブロードキャストされているraを拾って設定するので通信できてしまって,なんかすっきりしない.少し考えてみるか.VLAN使うしかないかな.

MyDNS更新用luaスクリプト

投稿日: Leave a comment

これまでFreeBSDのサーバーのcronで実行していたMyDNSのIPv4アドレス更新動作が途絶えていたので,RTX810のluaスクリプトに移植した.

動作は

  1. syslogからNetVolante DNSの更新を検出したらMyDNSにも更新に行く
  2. NetVolante DNSの更新が一定時間なくてもMyDNSに更新をする.

2の方は,一定時間更新がないとアカウントを消されてしまうので,そのための対処.基本的なアドレスの変更通知は1の方になる.

以下,そのスクリプト.

-- update_mydns.lua
-- polling Netvolante DNS update log with timeout

-- parameters for HTTP request
http_req = {
  url = "http://ipv4.mydns.jp/login.html",
  method = "GET",
  auth_type = "basic",
  auth_name = "mydnsxxxxxx",
  auth_pass = "xxxxxxxxxxx"
}

-- monitoring eventlog pattern
SYSLOG_PATTERN = "%[DDNS%] Update succeeded"
SYSLOG_NMATCH = 1
SYSLOG_TIME = 2 * 24 * 60 * 60

-- entry point (main)
while true do
  -- polling netvolante dns update log
  rtn, str = rt.syslogwatch(SYSLOG_PATTERN, SYSLOG_NMATCH, SYSLOG_TIME)

  -- http request for update IP address after:
  -- (1) netvolante dns update log detected
  -- (2) syslogwatch timer timed out
  rtn_http = rt.httprequest(http_req)
  rt.syslog("info", "[LUA][MyDNS] HTTP request for update IP address done")

  -- logging
  if rtn_http.code == 200 then
    if rtn > 0 and str then
      rt.syslog("info", "[LUA][MyDNS] Update succeeded (Netvolante DNS update detected)")
    else
      rt.syslog("info", "[LUA][MyDNS] Update succeeded (Force update)")
    end
  else
    rt.syslog("info", "[LUA][MyDNS] Update failed")
  end
end

これをsftpでRTX810に転送する.ユーザー権限だとファイルの書き込みができず少し悩んだが,通常のユーザー名を指定しつつも,ログインパスワードを管理者パスワードにすれば管理者権限付でログインできることが分かった.

時間間隔は以前と同様2日間隔とするが,cronと違って正確に2日間隔にはならない.が,サーバー側の負荷軽減を考えると少しずれてるくらいの方がいいと思うので,ここは特にこだわらないことにする.

このファイルを / 直下に置いて,実行してみる.

# lua /update_mydns.lua

これでPPPoEを切断してNetvolante DNSの更新をさせてみる.で,以下のようなログが記録された.

2014/01/17 12:10:42: PPPOE[01] PPPoE Connect
2014/01/17 12:10:43: PP[01] PPP/IPCP up  (Local: 125.30.x.x, Remote: x.x.x.x)
2014/01/17 12:10:43: [DDNS] netvolante-dns go PP[01] (auto)
2014/01/17 12:10:43: [DDNS] Update succeeded
2014/01/17 12:10:50: [LUA][MyDNS] HTTP request for update IP address done
2014/01/17 12:10:50: [LUA][MyDNS] Update succeeded (Netvolante DNS update detected)

あとは,起動時にスクリプトを実行するように設定して終わり.

schedule at 1 startup * lua /update_mydns.lua

IPv6接続をPPPoEからIPoEに変更

投稿日: Leave a comment

ここの続き。申請が通ったので早速RTX810の設定を変更した。

  • IPv6 PPPoEの設定を削除 (これをしないとIPoEの設定ができない)
  • IPv6 IPoEの設定を追加

この2段階で完了。

我が家はひかり電話を申し込んでいるので、

  1. NGNからは/56のプレフィックスがDHCPv6で降りてくる。
  2. ひかり電話のルーターがその中から最初の/60を使う。
  3. ひかり電話のルーター配下のDHCPv6クライアントへ残り15個の/60を順に払い出し

という挙動を示す。

ひかり電話のルーターに直接端末をつないだときに、どのような挙動を示すか試していないのではっきりはわからないけど、おそらくmフラグがONのRAを流していて、DHCPv6で端末にアドレスかプレフィックスを払い出すようになっていると思われる。

PPPoEのときとプレフィックスが変更になったのでサーバーのアドレスやらをひとつずつ変更し、とりあえず使える状態にした。

iijmioのIPv6版スピードテストで測ってみたところ、761.29Mbps出た。これまでPPPoEの制約で200Mbpsに張り付いていたのでかなりの改善。

そういえば、IPoEという名前はどうなんだろう。PPPoEの対義語としてはいいんだろうけど、この言葉だけ見たらEtherの上にIP通すのは当たり前すぎてあまりぱっとしない感じがして、ネイティブ方式の方がしっくりくると思う。

自宅ネットワークのダイナミックDNS設定

投稿日: Leave a comment

ここ

自宅サーバのIPv4アドレスはYamahaのネットボランチDNSサービスで使っているホスト名にCNAMEを向けて、IPv6アドレスはプロバイダから(半)固定で割当たっているアドレスをそのままAAAAにのせるつもり。

と書いてたけど、さくらインターネットのコントロールパネルから同じホスト名にCNAMEとAAAAを設定できない(AとAAAAは設定できる) ようで、仕方ないので MyDNS.jp の適当なホスト名に動的IPのAレコード、固定IPのAAAAレコードを設定して、rose.everblooming.netのCNAMEをMyDNS.jpのホストに設定した。

ここには結果は書かないけど、

> dig rose.everblooming.net a
> dig rose.everblooming.net aaaa

などとすればどんな感じになっているかわかるはず。

IPv4の動的IPアドレスはこんな感じのスクリプトをcronで4時間おきくらい(←適当)に回して更新する。IPv6は匿名アドレスを使っているので固定設定。source IPの設定が出来ればIPv6も動的IPにしたいところだけど、よくわからないのでまた今度。

# cat /usr/local/etc/update_mydnsjp.sh
#!/bin/sh

id=mydnsxxxxxx
pw=xxxxxxxxxxx

host=ipv4.mydns.jp
opt="-4 -q"

/usr/bin/fetch ${opt} ftp://${id}:${pw}@${host}/ > /dev/null 2>&1

一応、バックアップでネットボランチDNSの方にも登録。

フレッツ光ネクスト開通

投稿日: Leave a comment

ようやくフレッツ光ネクスト開通。

今住んでいるところのBフレッツのときは、PPPoEの設定までしてくれて、ルータのパスワードも設定してくれたけど、今回来てくれた人は、初期状態のまま置いて行きました。IP直打ちか設定ツールで設定して下さいとのこと。

とりあえず、運び込んでおいた新PCを立ち上げて、ひかり電話ルータの設定。設定といっても、PPPoEはヤマハRTX810からつなぐので、RTX810のWAN(LAN2)ポートへ静的ルーティングを指定するだけ。

それだけやって、ハブとひかり電話ルータの間にRTX810をつないでRTXの電源をONし、ついでハブ(GS116E)の電源を再起動。

まずは、IPv4のアドレスが問題なく取れていることを確認。さらに、ヤマハのサイトを見ながらIPv6 PPPoEの設定をして、グローバルのIPv6アドレスが取れるところまで設定完了。L2TPでとっていたときとプレフィックスが変わっていたので、tobyの設定を変えなきゃ。これは追々。

で、最終的な状態↓

なんか携帯のカメラがイマイチなのか、若干ピンぼけなのかすっきりしない写真。

テレビの調整。目標の60~65dBuVに対して、地デジ(UHF)は59~62dBuV、BSは60~63dBuVに調整できた。結構難しく、これ以上ATTを抜くと信号が歪んでいるのかレベルが下がるので、これが精一杯のレベル。事前の計算からもこれくらいがいいところっぽい。よく考えたら、TV入力前にVU/BS分配器を入れているので、3dBくらいのロスは計算通り。

それと、ルータの設定画面を出しているついでに、無線LANのルータ(WR8700N)を1F物置に設置し、P-02DのSIPの設定をした。そして新しい電話番号にかけてつながることも確認。

とりあえず、引っ越すまではRTX810とWR8700Nの電源はOFF。

IPv6 PPPoE 対応ルータ

投稿日: Leave a comment

FreeBSDでやっているIPv6トンネル over L2TPを引越し先でIPv6 PPPoEに変えようと思っていたけど、サーバ内でトンネル掘るとパケットフィルタのルールが複雑になってわけわからなくなりそう(というかすでにわけわからない)なので、IPv6 PPPoEに対応したルータを調べていたら、ヤマハのNVR500RTX810というのを見つけた。

前者はひかり電話機能付き、後者はVPN機能豊富なモデルで、付加機能が違うらしい。

ひかり電話対応というので色々調べていたら、こんなページを見つけた。
NTTから貸し出されるひかり電話ルータのONU出力を引っ張り出してつなげればひかり電話が使えるようになるとのこと。ただし、光ネクストのみ。Bフレッツと光ネクストとではひかり電話の仕組みが違うらしい。詳細不明。

じゃぁ、光ネクストでひかり電話使うならNVR500がいいかと思うと、SIPサーバ機能が無いらしく、スマートフォンをひかり電話の子機に出来ない。意外と便利で使っているだけにちょっと残念。あと、NTT指定ルータを使わないので何かあったときに困りそう。

では、ひかり電話のルータは活かしつつ、PPPoEブリッジのみにしておいて、NVR500なりRTX810からPPPoEv4/v6でつないであげれば、ひかり電話のルータのSIPは使えるはずで、あとはLANやひかり電話のルータとヤマハのルータがIPで繋げられるかどうかがポイント。

なんか、絵を描かないとわかりにくくなってきた。

ひかり回線–(1)–[ひかり電話ルータ]–(2)–[YAMAHA]–(3)–LAN

としたときに、LANからひかり電話ルータまでIPで到達できないとSIPで通信できないわけで、ポイントは

  • YAMAHAルータの(2)側にIPアドレスをふれるかどうか。
  • YAMAHAルータで(2)側・(3)側・WAN(PPPoE)でルーティングしてくれるかどうか。

ということになりそう。

まぁ、出来なきゃ出来ないで諦めるけど、VPNで外から入れるようにはしておきたいと考えると、VPNが充実しているRTX810が良さげ。

もうちょっと調べてみたら、装置を多段につなぐときはPPPoEを一番内側におけと書いているページを発見。自分の考えとだいたい合っていて安心した。

RTX810のDHCP設定

投稿日: Leave a comment

ここの続き。

DHCPでIPアドレスを予約するのに”ethernet”をつけなきゃいけない端末とつけてはいけない端末がいてややこしいので、調べてみた。

コマンドリファレンスから:

[書式]

dhcp scope bind scope_num ip_address [type] id
dhcp scope bind scope_num ip_address mac_address
dhcp scope bind scope_num ip_address ipcp
no dhcp scope bind scope_num ip_address

コマンドの第 2 書式による MAC アドレスでの予約は、クライアントの識別に DHCP パケットの 
chaddr フィールドを用いる。この形の予約機能は、RT の設定がdhcp server rfc2131 compliant off 
あるいは useclientid 機能を使用しない設定になっているか、もしくは DHCP クライアントが DHCP 
パケット中に Client-Identifier オプションを付けてこない場合でないと動作しない。

ということなので、Client-IdentifierをつけてIPアドレスを要求してくる場合は第1書式、ない場合は第2書式が使われていているということ。

useclientid機能はdhcp server rfc2131 compliant コマンドでOFFできるみたい。

dhcp server rfc2131 compliant except remain-silent use-clientid 

このコマンドを追加してみたところ、第2書式だけでうまくいっていそうな感じ。