yabe.jp https://yabe.jp a site of osamu yabe Sat, 15 Sep 2018 22:16:22 +0000 en-US hourly 1 https://wordpress.org/?v=4.9.8 https://i0.wp.com/yabe.jp/wp-content/uploads/2014/12/y_logo-549a8f5bv1_site_icon.png?fit=32%2C32&ssl=1 yabe.jp https://yabe.jp 32 32 12842837 MTU / MSS を最適化する https://yabe.jp/gadgets/optimizing-mtu-mss/ https://yabe.jp/gadgets/optimizing-mtu-mss/#comments Sun, 17 Jun 2018 08:43:29 +0000 https://yabe.jp/?p=10190 ルーターを語る上で開けて通れないのが MTU / MSS ですね。自分も L2TPv3 によるレイヤー2 VPN を設定したのを機に、きちっと計算してみました。

The post MTU / MSS を最適化する appeared first on yabe.jp.

]]>
ルーターを語る上で避けて通れないのが MTU / MSS ですね。自分も L2TPv3 によるレイヤー2 VPN を設定したのを機に、きちっと計算してみました。

MTU / MSS とは

MTU は通信インターフェースが通せる最大データサイズ、 MSS は TCP/IP の通信の際のデータ(ペイロード)の最大サイズです。例えば大抵の LAN のインターフェースである Ethernet の場合 MTU は 1500 バイトです。その Ethernet で TCP/IP のパケットを流す場合、 MSS は大抵の場合

MTU – IP ヘッダ – TCP ヘッダ
= 1500 – 20 – 20
= 1460

となります。パケットの大きさが MTU の大きさを超えると不必要にパケットが分割され、通信が遅くなります。そのようなオーバーヘッドを避けるには、ルーターで適切に MTU / MSS を設定してやる必要があります。

実は MTU はきちんと設定しなくても大抵の場合自動調整されますが、「あるサイトは見られるけど、別のあるサイトはブラウザーが固まったようになって見られない」という問題が出ている場合は、そのサイトへの経路上に IGMP をブロックするルーターがあり、経路の最小 MTU がうまく調整されないことが原因だったりします。この場合も自分のルーターで MTU / MSS を適切に設定してやることにより解消できたりします。

どういうときに使うのか

例えばフレッツの PPPoE (IPv4) を使う場合、 MTU は 1454 以下 ( MSS 1414 以下 ) でないと通信に問題が出る場合があります。なので自宅のルーターにフレッツの PPPoE を認証させる時は、一緒に MTU も 1454 と設定します。また、その際ルーターに経路上の MTU がわからなくても MSS を強制的に設定する MSS Clamping の機能ある場合、 MSS Clamping を 1414 にしておくときちんと通信できるようになったりします。

そしてパケットの複雑なカプセル化を伴う VPN を使う場合、 MSS を適正な値に設定することは大変重要です。

しかしどんなプロトコルを使って、何をどうカプセル化するかによって、 MTU / MSS は色々変わります。自分が使っているパターンで最も複雑な、レイヤー2 VPN の「 TCP/IP over Ethernet over L2TPv3 over IPsec over フレッツ PPPoE over Ethernet 」ではどの値が最適なのか知りたかったので、腰を落ち着けて計算してみました。 MTU はこのページにあるように Ping でコツコツ調べるのが王道ですが、 L2TPv3 トンネルはレイヤー2通信をうまく扱うよう設計されたせいか、大きなパケットが来ると空気を読んで分割してくれたりしちゃうようです。なので、計算しないとダメそうです。

MTU / MSS の計算例

TCP/IP over
Ethernet
Ethernet MTU 1500
IP 20
TCP 20
= MSS 1460

もっとも基本的な例です。世の中のほとんどの Ethernet ポートの MTU はデフォルトで 1500 になっています。なので、フレッツを使っている、もしくは特定のサイトを見るときに MTU / MSS を小さくしないと問題がでる、等の場合以外は何も設定を変える必要がないかもしれません。

TCP/IP over
フレッツ PPPoE over
Ethernet
Ethernet MTU 1500
フレッツ内 IP 20
フレッツ内 UDP 8
フレッツ内 L2TP 16
認証用 PPP 2
= フレッツ PPPoE MTU 1454
IP 20
TCP 20
= フレッツ PPPoE MSS 1414

フレッツの IPv4 PPPoE を使っている場合の例です。フレッツ PPPoE 経由でルーターから発信されるパケットは、まず6バイトの PPPoE ヘッダと2バイトの PPP ヘッダが付いた状態で送信されます。その後 DSLAM が PPPoE ヘッダを除去し、代わりに IP + UDP + L2TP ヘッダを付けます。この部分で MTU = 1500 を超えないよう、ルーターの PPPoE MTU を 1454 にするのが望ましいです。

TCP/IP over
IPsec (ESP) over
フレッツ PPPoE
PPPoE MTU 1454
IP (IPsec) 20
SPI 4
シーケンス番号 4
初期化ベクトル (AES 256) 16
ESP 認証データ (SHA 1) 12
= ここまでの小計 1398
= 1398 以下で最大の 16 の倍数 1392
Padding (0)
Padding 長 1
プロトコル (次ヘッダ) 1
= IPsec 用仮想 MTU 1390
IP 20
TCP 20
= IPsec MSS 1350

TCP/IP のパケットが IPsec のトンネルモードでカプセル化されてる場合の、 ESP パケットから考えた MTU / MSS の例です。この場合の IPsec ESP アルゴリズム / ハッシュには aes256 / sha1 を使いました。 NAT-T 等を使っている場合は、さらに UDP ヘッダの8バイト分を引く必要があります。ここでは下記のサイトを参考にしました。
IPsec/IKEに関するFAQ
IPSec通信におけるTCP MSS調整機能

TCP/IP over
GRE over
IPsec (ESP) over
フレッツ PPPoE
PPPoE MTU 1454
IP (IPsec) 20
SPI 4
シーケンス番号 4
初期化ベクトル (AES 256) 16
ESP 認証データ (SHA 1) 12
= ここまでの小計 1398
= 1398 以下で最大の 16 の倍数 1392
Padding (0)
Padding 長 1
プロトコル (次ヘッダ) 1
= IPsec 用仮想 MTU 1390
IP (GRE) 20
GRE 4
= GRE MTU 1366
IP 20
TCP 20
= GRE MSS 1326

TCP/IP のパケットを GRE でカプセル化し、それが IPsec のトンネルモードでカプセル化されてる場合の例です。

TCP/IP over
Ethernet over
L2TPv3 (UDP) over
IPsec (ESP) over
フレッツ PPPoE
PPPoE MTU 1454
IP (IPsec) 20
SPI 4
シーケンス番号 4
初期化ベクトル (AES 256) 16
ESP 認証データ (SHA 1) 12
= ここまでの小計 1398
= 1398 以下で最大の 16 の倍数 1392
Padding (0)
Padding 長 1
プロトコル (次ヘッダ) 1
= IPsec 用仮想 MTU 1390
IP (L2TPv3) 20
UDP (L2TPv3) 8
L2TPv3 12
Ethernet 14
= L2TPv3 MTU 1336
IP 20
TCP 20
= L2TPv3 MSS 1296

これが「 TCP/IP over Ethernet over L2TPv3 over IPsec over フレッツ PPPoE over Ethernet 」の結果と相成りました。 TCP/IP のパケットを含んだ Ethernet フレームを L2TPv3 でカプセル化し、それを IPsec のトンネルモードでカプセル化し、それを PPPoE でカプセル化し・・マトリョーシカ何個分でしょうか。ともかく、パケットをルーターでフラグメントさせないためには MSS を 1296 以下にすれば良さそうです。シスコのサイトなどを見ると、そこからさらに余裕をもって小さくすることが推奨されており、自分の環境では保守的に MSS 1240 にしています。この計算はどうも自信がないので、間違いを見つけた方は是非お知らせください。

The post MTU / MSS を最適化する appeared first on yabe.jp.

]]>
https://yabe.jp/gadgets/optimizing-mtu-mss/feed/ 1 10190
EdgeRouter 6P – 12. 自宅と実家を L2 VPN で一体化する ( L2TPv3 Bridging ) https://yabe.jp/gadgets/edgerouter-6p-12-l2tpv3-bridge/ https://yabe.jp/gadgets/edgerouter-6p-12-l2tpv3-bridge/#respond Mon, 11 Jun 2018 07:30:06 +0000 https://yabe.jp/?p=10099 VPN ファンの誰もが憧れる2拠点のレイヤー2接続による完全同一 LAN 化を、ソフトイーサを使わずに EdgeRouter だけで達成しました。

The post EdgeRouter 6P – 12. 自宅と実家を L2 VPN で一体化する ( L2TPv3 Bridging ) appeared first on yabe.jp.

]]>
遂にやりました。

VPN ファンの誰もが憧れる2拠点のレイヤー2接続による同一 LAN 化を、ソフトイーサを使わずに EdgeRouter だけで達成しました。足掛け3年にも及ぶ試行錯誤の結果、ついに EdgeRouter だけで地デジがリアルタイムで観られるようになりました。いやー、よくやった俺。レイヤー2での拠点間通信なので、 Bonjour = mDNS / DLNA = SDDP 等々もきっちり両拠点間を通して動作しております。

ソフトイーサすごい

安全確実にレイヤー2 VPN を実現するなら、最強のレイヤー2対応 VPN 、ソフトイーサを使うのが最も簡単で成功率が高いです。ソフトイーサを動作させられる PC が自宅と実家にあるなら、それでカスケード接続しちゃえばあっけなく動きます。しかし、漢ならルーター一貫で設定したいもの。と思って EdgeRouter だけでの設定に挑戦し、気がついたらほぼ1年経ってました。

ソフトイーサ導入(と Mac mini 2台)で地デジが観られることを確認したものの、そこから EdgeRouter だけで2拠点レイヤー2接続してみてもなかなか思うように Ethernet フレームが行き来しません。ソフトイーサは完全にスイッチングハブをエミュレートしているのに対し、 EdgeRouter のブリッジは細かな挙動がスイッチと違っており、そこをコツコツ調べてようやく動くようになりました。

でもソフトイーサ無しで実現したい

というわけで、設定例を記したいと思います。ただこの記事をわざわざわ読みに来るような人はある程度ルーターに詳しい人でしょうし、あまりにも設定が多岐にわたるので、ともかく設定ファイルを載せてしまおうと思います。パスワードやプライベート IP アドレスはボカしてありますが、流れはつかめるかと思います。

設定の概要

自宅 実家
機種 EdgeRouter 6P EdgeRouter 6P
ファームウェア 1.10.0 1.10.0
プロバイダー Comcast nifty
DDNS XXX1.duckdns.org XXX2.duckdns.org
WAN 側 ポート eth0 pppoe0
WAN 側 MTU 1500 1454 (PPPoE)
WAN 側 IP アドレス ダイナミック / DHCP ダイナミック / PPPoE
LAN 側 ポート eth2 eth2
LAN 側 IP アドレス 10.0.XX1.1 10.0.XX2.1
LAN 側 ネットワーク 10.0.XX1.0/22 10.0.XX2.0/22
L2TPv3 用ブリッジ br0 br0
ブリッジ用 Ethernet ポート eth3 eth3
br0 用 IPv4 Firwall DHCP を遮断 DHCP を遮断
br0 用 IPv6 Firewall IPv6 パケットを遮断 IPv6 パケットを遮断
GRE 用ループバックアドレス 192.168.111.1/32 192.168.111.2/32
GRE トンネル IP アドレス 192.168.121.1/30 192.168.121.2/30
GRE トンネル MTU 1366 1366
L2TPv3 用ループバックアドレス 192.168.112.1/32 192.168.112.2/32
L2TPv3 トンネル IP アドレス ブリッジなので無し ブリッジなので無し
L2TPv3 ベースプロトコル udp udp
L2TPv3 UDP 送信元ポート [l2tpv3-port-1] [l2tpv3-port-2]
L2TPv3 UDP 宛先ポート [l2tpv3-port-2] [l2tpv3-port-1]
L2TPv3 トンネル MTU 1300 1300
L2TPv3 トンネル MSS 1240 1240
IPsec トンネル1 (GRE) 192.168.111.1 – 192.168.111.2 (Site-to-Site)
IPsec トンネル2 (L2TPv3) 192.168.112.1 – 192.168.112.2 (Site-to-Site)
QoS Smart Queue Smart Queue
QoS WAN eth0 pppoe0
QoS Upload 10 Mbps 70 Mbps
QoS Download 250 Mbps 70 Mbps
Offload オフ オフ
DNS 1 [comcast-dns-1] [nifty-dns-1]
DNS 2 [comcast-dns-2] [nifty-dns-2]
バックアップ DNS 1 [public-dns-1] [public-dns-1]
バックアップ DNS 2 [public-dns-2] [public-dns-2]

L2TPv3 の MTU は計算してみたところ 1336 以下となりました。ただここではより保守的に 1300 に、そして MSS はさらに保守的に 1240 に設定しています。

自宅側 ( Comcast )

firewall {
    all-ping enable
    broadcast-ping disable
    group {
        address-group google-clients {
            address 10.0.XX1.XX
        }
        address-group hulu-ipset {
            description hulu.jp
        }
        address-group psstore-ipset {
            description store.playstation.com
        }
        address-group radiko-ipset {
        }
        address-group tver-ipset {
            description tver.jp
        }
    }
    ipv6-name L2v6 {
        default-action drop
    }
    ipv6-name WANv6_IN {
        default-action drop
        description "WAN to internal"
        rule 10 {
            action accept
            description "Allow established/related"
            state {
                established enable
                related enable
            }
        }
        rule 20 {
            action accept
            description "Allow ICMPv6"
            protocol ipv6-icmp
        }
        rule 30 {
            action drop
            description "Drop invalid state"
            state {
                invalid enable
            }
        }
    }
    ipv6-name WANv6_LOCAL {
        default-action drop
        description "WAN to router"
        rule 10 {
            action accept
            description "Allow established/related"
            state {
                established enable
                related enable
            }
        }
        rule 50 {
            action accept
            description "Allow DHCPv6"
            destination {
                port 546
            }
            protocol udp
            source {
                port 547
            }
        }
        rule 70 {
            action accept
            description "Allow IPv6 ICMP"
            protocol ipv6-icmp
        }
        rule 500 {
            action drop
            description "Drop invalid state"
            state {
                invalid enable
            }
        }
    }
    ipv6-receive-redirects disable
    ipv6-src-route disable
    ip-src-route disable
    log-martians enable
    modify route_tunnel {
        rule 10 {
            action modify
            description radiko.jp
            destination {
                group {
                    address-group radiko-ipset
                }
            }
            modify {
                table 1
            }
        }
        rule 110 {
            action modify
            modify {
                table 1
            }
            source {
                group {
                    address-group google-clients
                }
            }
        }
        rule 520 {
            action modify
            description tver-ipset
            destination {
                group {
                    address-group tver-ipset
                }
            }
            modify {
                table 1
            }
        }
        rule 530 {
            action modify
            description psstore-ipset
            destination {
                group {
                    address-group psstore-ipset
                }
            }
            modify {
                table 1
            }
        }
        rule 550 {
            action modify
            description hulu-ipset
            destination {
                group {
                    address-group hulu-ipset
                }
            }
            modify {
                table 1
            }
        }
    }
    name L2 {
        default-action accept
        description L2_filter
        rule 1 {
            action drop
            description "Drop DHCP"
            destination {
                port 67-68
            }
            log disable
            protocol udp
        }
    }
    name WAN_IN {
        default-action drop
        description "WAN to internal"
        rule 10 {
            action accept
            description "Allow established/related"
            state {
                established enable
                related enable
            }
        }
        rule 20 {
            action accept
            description "Allow GRE"
            log disable
            protocol gre
        }
        rule 30 {
            action drop
            description "Drop invalid state"
            state {
                invalid enable
            }
        }
    }
    name WAN_LOCAL {
        default-action drop
        description "WAN to router"
        rule 10 {
            action accept
            description "Allow established/related"
            state {
                established enable
                related enable
            }
        }
        rule 30 {
            action accept
            description "Allow L2TP"
            destination {
                port 500,1701,4500,[l2tpv3-port-1],[l2tpv3-port-2]
            }
            log disable
            protocol tcp_udp
        }
        rule 40 {
            action accept
            description "Allow ESP"
            log disable
            protocol esp
        }
        rule 50 {
            action accept
            description "Allow GRE"
            log disable
            protocol gre
        }
        rule 60 {
            action accept
            description "Allow ICMP"
            log disable
            protocol igmp
        }
        rule 70 {
            action drop
            description "Drop invalid state"
            state {
                invalid enable
            }
        }
    }
    options {
        mss-clamp {
            interface-type all
            mss 1240
        }
    }
    receive-redirects disable
    send-redirects enable
    source-validation disable
    syn-cookies enable
}
interfaces {
    bridge br0 {
        aging 300
        bridged-conntrack disable
        description Bridge
        firewall {
            in {
                ipv6-name L2v6
                name L2
            }
        }
        hello-time 2
        max-age 20
        multicast enable
        priority 32768
        promiscuous enable
        stp false
    }
    ethernet eth0 {
        address dhcp
        description Internet
        dhcp-options {
            default-route update
            default-route-distance 210
            name-server no-update
        }
        dhcpv6-pd {
            pd 0 {
                interface eth1 {
                    host-address ::1
                    prefix-id :1
                    service slaac
                }
                prefix-length /60
            }
            rapid-commit enable
        }
        duplex auto
        firewall {
            in {
                ipv6-name WANv6_IN
                name WAN_IN
            }
            local {
                ipv6-name WANv6_LOCAL
                name WAN_LOCAL
            }
        }
        poe {
            output off
        }
        speed auto
    }
    ethernet eth1 {
        address 10.1.X1.1/24
        description Local
        duplex auto
        poe {
            output off
        }
        speed auto
    }
    ethernet eth2 {
        address 10.0.XX1.1/22
        description Local
        duplex auto
        firewall {
            in {
                modify route_tunnel
            }
        }
        poe {
            output 24v
        }
        speed auto
    }
    ethernet eth3 {
        bridge-group {
            bridge br0
        }
        description Local
        duplex auto
        ip {
            enable-proxy-arp
        }
        poe {
            output off
        }
        speed auto
    }
    ethernet eth4 {
        description Local
        duplex auto
        poe {
            output off
        }
        speed auto
    }
    l2tpv3 l2tpeth0 {
        bridge-group {
            bridge br0
        }
        description "L2 Tunnel"
        destination-port [l2tpv3-port-2]
        encapsulation udp
        local-ip 192.168.112.1
        mtu 1300
        peer-session-id 200
        peer-tunnel-id 200
        remote-ip 192.168.112.2
        session-id 100
        source-port [l2tpv3-port-1]
        tunnel-id 100
    }
    loopback lo {
        address 192.168.111.1/32
        address 192.168.112.1/32
    }
    tunnel tun0 {
        address 192.168.121.1/30
        description "L3 Tunnel"
        encapsulation gre
        local-ip 192.168.111.1
        mtu 1366
        multicast enable
        remote-ip 192.168.111.2
        ttl 255
    }
}
port-forward {
    auto-firewall enable
    hairpin-nat enable
    lan-interface eth1
    lan-interface eth2
    rule 4 {
        description UNMS
        forward-to {
            address 10.0.XX1.XX
            port XXXXX
        }
        original-port XXXXX
        protocol tcp_udp
    }
    rule 5 {
        description UniFi
        forward-to {
            address 10.0.XX1.XX
            port XXXX
        }
        original-port XXXX
        protocol tcp_udp
    }
    rule 7 {
        description SoftEther
        forward-to {
            address 10.1.X1.101
            port XXXX
        }
        original-port XXXX
        protocol tcp_udp
    }
    wan-interface eth0
}
protocols {
    static {
        interface-route 10.1.X2.0/24 {
            next-hop-interface tun0 {
            }
        }
        table 1 {
            interface-route 0.0.0.0/0 {
                next-hop-interface tun0 {
                }
            }
        }
    }
}
service {
    dhcp-server {
        disabled false
        hostfile-update disable
        shared-network-name Config {
            authoritative disable
            subnet 10.1.X1.0/24 {
                default-router 10.1.X1.1
                dns-server 10.1.X1.1
                lease 86400
                start 10.1.X1.11 {
                    stop 10.1.X1.30
                }
                static-mapping Mac-mini-LAN {
                    ip-address 10.1.X1.101
                    mac-address XX:XX:XX:XX:XX:XX
                }
            }
        }
        shared-network-name LAN {
            authoritative enable
            subnet 10.0.XX1.0/22 {
                default-router 10.0.XX1.1
                dns-server 10.0.XX1.1
                lease 86400
                start 10.0.XX1.11 {
                    stop 10.0.XX1.30
                }
                static-mapping Mac {
                    ip-address 10.0.XX1.XX
                    mac-address XX:XX:XX:XX:XX:XX
                }
            }
        }
        static-arp disable
        use-dnsmasq disable
    }
    dns {
        dynamic {
            interface eth0 {
                service custom-duckdns {
                    host-name XXX1
                    login nouser
                    password XXXXXXXX
                    protocol dyndns2
                    server www.duckdns.org
                }
            }
        }
        forwarding {
            cache-size 500
            except-interface eth0
            name-server [comcast-dns-1]
            name-server [comcast-dns-2]
            name-server [public-dns-1]
            name-server [public-dns-2]
            options strict-order
            options ipset=/tver.jp/ntv.co.jp/tv-asahi.co.jp/tbs.co.jp/fujitv.co.jp/presentcast.co.jp/brightcove.com/brightcove.net/streamhub.tv/streamhub.io/stream.ne.jp/durasite.net/ad-v.jp/interactive-circle.jp/ntvmov-elb-1535922568.ap-northeast-1.elb.amazonaws.com/tver-api-data.s3.amazonaws.com/s3-ap-northeast-1-w.amazonaws.com/e7164.g.akamaiedge.net/tver-ipset
            options server=/tver.jp/ntv.co.jp/tv-asahi.co.jp/tbs.co.jp/fujitv.co.jp/presentcast.co.jp/brightcove.com/brightcove.net/streamhub.tv/streamhub.io/stream.ne.jp/durasite.net/ad-v.jp/interactive-circle.jp/ntvmov-elb-1535922568.ap-northeast-1.elb.amazonaws.com/tver-api-data.s3.amazonaws.com/s3-ap-northeast-1-w.amazonaws.com/e7164.g.akamaiedge.net/[nifty-dns-1]
            options ipset=/playstation.com/playstation.com.edgekey.net/playstation.net.edgekey.net/playstation.net/playstation.net.edgesuite.net/d1bzh9wdftmzm0.cloudfront.net/sonycoment-1.hs.llnwd.net/us-p1-np-sn-623478034.us-west-1.elb.amazonaws.com/us-p1-np-event-844572407.us-west-1.elb.amazonaws.com/us-p1-np-commerce-1073095297.us-west-1.elb.amazonaws.com/us-p1-np-regcam-2129210197.us-west-1.elb.amazonaws.com/sonynetworkentertainment.112.2o7.net/psstore-ipset
            options server=/playstation.com/playstation.com.edgekey.net/playstation.net.edgekey.net/playstation.net/playstation.net.edgesuite.net/d1bzh9wdftmzm0.cloudfront.net/sonycoment-1.hs.llnwd.net/us-p1-np-sn-623478034.us-west-1.elb.amazonaws.com/us-p1-np-event-844572407.us-west-1.elb.amazonaws.com/us-p1-np-commerce-1073095297.us-west-1.elb.amazonaws.com/us-p1-np-regcam-2129210197.us-west-1.elb.amazonaws.com/sonynetworkentertainment.112.2o7.net/[nifty-dns-1]
            options ipset=/hulu.jp/happyon.jp/happyon.jp.edgekey.net/huluim.com/hulu.com.akadns.net/hulu.com.edgekey.net/a268.b.akamai.net/e8297.e12.akamaiedge.net/e7963.b.akamaiedge.net/e9436.b.akamaiedge.net/hulu-ipset
            options server=/hulu.jp/happyon.jp/happyon.jp.edgekey.net/huluim.com/hulu.com.akadns.net/hulu.com.edgekey.net/a268.b.akamai.net/e8297.e12.akamaiedge.net/e7963.b.akamaiedge.net/e9436.b.akamaiedge.net/[nifty-dns-1]
            options ipset=/radiko.jp/f-radiko.smartstream.ne.jp/appsflyer.com/e4805.a.akamaiedge.net/appsflyer-web-1810875176.eu-west-1.elb.amazonaws.com/appsflyer-web-2-1926050047.eu-west-1.elb.amazonaws.com/sessionstat-999713689.eu-west-1.elb.amazonaws.com/radiko-ipset
            options server=/radiko.jp/f-radiko.smartstream.ne.jp/appsflyer.com/e4805.a.akamaiedge.net/appsflyer-web-1810875176.eu-west-1.elb.amazonaws.com/appsflyer-web-2-1926050047.eu-west-1.elb.amazonaws.com/sessionstat-999713689.eu-west-1.elb.amazonaws.com/[nifty-dns-1]
        }
    }
    gui {
        http-port 80
        https-port 443
        older-ciphers enable
    }
    nat {
        rule 5010 {
            description masquerade-for-WAN
            outbound-interface eth0
            type masquerade
        }
        rule 5011 {
            description masquerade-for-tun0
            destination {
                address !224.0.0.0-239.255.255.255
                group {
                }
            }
            log disable
            outbound-interface tun0
            protocol tcp_udp
            source {
                address 10.0.XX1.0/24
            }
            type masquerade
        }
    }
    ssh {
        allow-root
        port 22
        protocol-version v2
    }
    unms {
        connection wss://10.0.XX1.XX:XXXXX
    }
    upnp2 {
        acl {
            rule 10 {
                action deny
                description Block-port-4500
                external-port 4500
                local-port 4500
                subnet 10.0.XX1.0/22
            }
        }
        listen-on eth1
        listen-on eth2
        nat-pmp enable
        secure-mode enable
        wan eth0
    }
}
system {
    host-name router1
    login {
        user XXXXX {
            authentication {
                encrypted-password XXXXXXXX
            }
            level admin
        }
    }
    name-server 127.0.0.1
    ntp {
        server 1.ubnt.pool.ntp.org {
        }
    }
    options {
        reboot-on-panic true
    }
    syslog {
        global {
            facility all {
                level notice
            }
            facility protocols {
                level debug
            }
        }
    }
    time-zone America/Los_Angeles
    traffic-analysis {
        dpi enable
        export enable
    }
}
traffic-control {
    smart-queue QoS {
        download {
            ecn enable
            flows 1024
            fq-quantum 1514
            limit 10240
            rate 250mbit
        }
        upload {
            ecn enable
            flows 1024
            fq-quantum 1514
            limit 10240
            rate 10mbit
        }
        wan-interface eth0
    }
}
vpn {
    ipsec {
        auto-update 3600
        auto-firewall-nat-exclude enable
        esp-group ESP-1 {
            compression disable
            lifetime 1800
            mode tunnel
            pfs enable
            proposal 1 {
                encryption aes256
                hash sha1
            }
            proposal 2 {
                encryption 3des
                hash md5
            }
        }
        ike-group IKE-1 {
            ikev2-reauth no
            key-exchange ikev2
            lifetime 3600
            proposal 1 {
                dh-group 2
                encryption aes256
                hash sha1
            }
            proposal 2 {
                dh-group 2
                encryption aes128
                hash sha1
            }
        }
        ipsec-interfaces {
            interface eth0
        }
        nat-networks {
            allowed-network 0.0.0.0/0 {
                exclude 10.0.XX1.0/22
            }
        }
        nat-traversal enable
        site-to-site {
            peer XXX2.duckdns.org {
                authentication {
                    id XXX1.duckdns.org
                    mode pre-shared-secret
                    pre-shared-secret XXXXXXXX
                    remote-id XXX2.duckdns.org
                }
                connection-type initiate
                default-esp-group ESP-1
                dhcp-interface eth0
                ike-group IKE-1
                ikev2-reauth inherit
                tunnel 1 {
                    allow-nat-networks disable
                    allow-public-networks disable
                    local {
                        prefix 192.168.111.1/32
                    }
                    remote {
                        prefix 192.168.111.2/32
                    }
                }
                tunnel 2 {
                    allow-nat-networks disable
                    allow-public-networks disable
                    local {
                        prefix 192.168.112.1/32
                    }
                    remote {
                        prefix 192.168.112.2/32
                    }
                }
            }
        }
    }
    l2tp {
        remote-access {
            authentication {
                local-users {
                    username XXXXX {
                        password XXXXXXXX
                }
                mode local
            }
            client-ip-pool {
                start 10.0.XX1.141
                stop 10.0.XX1.150
            }
            dhcp-interface eth0
            dns-servers {
                server-1 10.0.XX1.1
                server-2 [comcast-dns-1]
            }
            idle 1800
            ipsec-settings {
                authentication {
                    mode pre-shared-secret
                    pre-shared-secret XXXXXXXX
                }
                ike-lifetime 3600
                lifetime 3600
            }
            mtu 1280
        }
    }
}

実家側 ( フレッツのコラボ光 )

firewall {
    all-ping enable
    broadcast-ping disable
    ipv6-name L2v6 {
        default-action drop
    }
    ipv6-name WANv6_IN {
        default-action drop
        description "WAN to internal"
        rule 10 {
            action accept
            description "Allow established/related"
            state {
                established enable
                related enable
            }
        }
        rule 20 {
            action accept
            description "Allow IPv6 ICMP"
            protocol ipv6-icmp
        }
        rule 30 {
            action drop
            description "Drop invalid state"
            state {
                invalid enable
            }
        }
    }
    ipv6-name WANv6_LOCAL {
        default-action drop
        description "WAN to router"
        rule 10 {
            action accept
            description "Allow established/related"
            state {
                established enable
                related enable
            }
        }
        rule 50 {
            action accept
            description "Allow DHCPv6"
            destination {
                port 546
            }
            protocol udp
            source {
                port 547
            }
        }
        rule 70 {
            action accept
            description "Allow IPv6 ICMP"
            protocol ipv6-icmp
        }
        rule 500 {
            action drop
            description "Drop invalid state"
            state {
                invalid enable
            }
        }
    }
    ipv6-receive-redirects disable
    ipv6-src-route disable
    ip-src-route disable
    log-martians enable
    name L2 {
        default-action accept
        description L2_filter
        rule 1 {
            action drop
            description "Drop DHCP"
            log disable
            protocol udp
            source {
                port 67-68
            }
        }
    }
    name WAN_IN {
        default-action drop
        description "WAN to internal"
        rule 10 {
            action accept
            description "Allow established/related"
            state {
                established enable
                related enable
            }
        }
        rule 20 {
            action accept
            description "Allow GRE"
            log disable
            protocol gre
        }
        rule 30 {
            action drop
            description "Drop invalid state"
            state {
                invalid enable
            }
        }
    }
    name WAN_LOCAL {
        default-action drop
        description "WAN to router"
        rule 10 {
            action accept
            description "Allow established/related"
            state {
                established enable
                related enable
            }
        }
        rule 30 {
            action accept
            description "Allow L2TP"
            destination {
                port 500,1701,4500,[l2tpv3-port-1],[l2tpv3-port-2]
            }
            log disable
            protocol tcp_udp
        }
        rule 40 {
            action accept
            description "Allow ESP"
            log disable
            protocol esp
        }
        rule 50 {
            action accept
            description "Allow GRE"
            log disable
            protocol gre
        }
        rule 60 {
            action accept
            description "Allow ICMP"
            log disable
            protocol icmp
        }
        rule 70 {
            action drop
            description "Drop invalid state"
            state {
                invalid enable
            }
        }
    }
    options {
        mss-clamp {
            interface-type all
            mss 1240
        }
    }
    receive-redirects disable
    send-redirects enable
    source-validation disable
    syn-cookies enable
}
interfaces {
    bridge br0 {
        aging 300
        bridged-conntrack disable
        description Bridge
        firewall {
            in {
                ipv6-name L2v6
                name L2
            }
        }
        hello-time 2
        max-age 20
        multicast enable
        priority 32768
        promiscuous enable
        stp false
    }
    ethernet eth0 {
        description Internet
        dhcp-options {
            default-route update
            default-route-distance 210
            name-server no-update
        }
        duplex auto
        firewall {
            in {
                ipv6-name WANv6_IN
            }
            local {
                ipv6-name WANv6_LOCAL
            }
        }
        ipv6 {
            address {
                autoconf
            }
            dup-addr-detect-transmits 1
        }
        poe {
            output off
        }
        pppoe 0 {
            default-route auto
            description ISP
            firewall {
                in {
                    name WAN_IN
                }
                local {
                    name WAN_LOCAL
                }
            }
            mtu 1454
            name-server none
            password XXXXXXXXX
            user-id XXXXX
        }
        speed auto
    }
    ethernet eth1 {
        address 10.1.X2.1/24
        description Local
        duplex auto
        poe {
            output off
        }
        speed auto
    }
    ethernet eth2 {
        address 10.0.XX2.1/22
        description Local
        duplex auto
        poe {
            output off
        }
        speed auto
    }
    ethernet eth3 {
        bridge-group {
            bridge br0
        }
        description Local
        duplex auto
        ip {
            enable-proxy-arp
        }
        poe {
            output off
        }
        speed auto
    }
    ethernet eth4 {
        description Local
        duplex auto
        poe {
            output off
        }
        speed auto
    }
    l2tpv3 l2tpeth0 {
        bridge-group {
            bridge br0
        }
        description "L2 Tunnel"
        destination-port [l2tpv3-port-1]
        encapsulation udp
        local-ip 192.168.112.2
        mtu 1300
        peer-session-id 100
        peer-tunnel-id 100
        remote-ip 192.168.112.1
        session-id 200
        source-port [l2tpv3-port-2]
        tunnel-id 200
    }
    loopback lo {
        address 192.168.111.2/32
        address 192.168.112.2/32
    }
    tunnel tun0 {
        address 192.168.121.2/30
        description "L3 Tunnel"
        encapsulation gre
        local-ip 192.168.111.2
        mtu 1366
        multicast enable
        remote-ip 192.168.111.1
        ttl 255
    }
}
port-forward {
    auto-firewall enable
    hairpin-nat enable
    lan-interface eth1
    lan-interface eth2
    rule 4 {
        description SoftEther
        forward-to {
            address 10.0.XX2.104
            port XXXX
        }
        original-port XXXX
        protocol tcp_udp
    }
    wan-interface pppoe0
}
protocols {
    static {
        interface-route 10.1.X1.0/24 {
            next-hop-interface tun0 {
            }
        }
    }
}
service {
    dhcp-server {
        disabled false
        hostfile-update disable
        shared-network-name Config {
            authoritative disable
            subnet 10.1.X2.0/24 {
                default-router 10.1.X2.1
                dns-server 10.1.X2.1
                lease 86400
                start 10.1.X2.11 {
                    stop 10.1.X2.30
                }
            }
        }
        shared-network-name LAN {
            authoritative disable
            subnet 10.0.XX2.0/22 {
                default-router 10.0.XX2.1
                dns-server 10.0.XX2.1
                lease 86400
                start 10.0.XX2.11 {
                    stop 10.0.XX2.30
                }
                static-mapping Mac-mini-LAN {
                    ip-address 10.0.XX2.104
                    mac-address XX:XX:XX:XX:XX:XX
                }
            }
        }
        static-arp disable
        use-dnsmasq disable
    }
    dns {
        dynamic {
            interface pppoe0 {
                service custom-duckdns {
                    host-name XXX2
                    login nouser
                    password XXXXXXXX
                    protocol dyndns2
                    server www.duckdns.org
                }
            }
        }
        forwarding {
            cache-size 500
            except-interface eth0
            name-server [nifty-dns-1]
            name-server [nifty-dns-2]
            name-server [public-dns-1]
            name-server [public-dns-2]
            options strict-order
        }
    }
    gui {
        http-port 80
        https-port 443
        older-ciphers enable
    }
    nat {
        rule 5002 {
            description masquerade-for-WAN
            log disable
            outbound-interface pppoe0
            protocol all
            source {
            }
            type masquerade
        }
        rule 5003 {
            description masquerade-for-tun0
            destination {
                address !224.0.0.0-239.255.255.255
            }
            log disable
            outbound-interface tun0
            protocol tcp_udp
            source {
                address 10.0.XX2.0/24
            }
            type masquerade
        }
    }
    ssh {
        allow-root
        port 22
        protocol-version v2
    }
    unms {
        connection wss://XXX1.duckdns.org:XXXXX
    }
    upnp2 {
        acl {
            rule 10 {
                action deny
                description "Block port 4500"
                external-port 4500
                local-port 4500
                subnet 10.0.XX2.0/22
            }
        }
        listen-on eth1
        listen-on eth2
        nat-pmp enable
        secure-mode enable
        wan pppoe0
    }
}
system {
    host-name ER6-Y01
    login {
        user XXXXX {
            authentication {
                encrypted-password XXXXXXXX
            }
            level admin
        }
    }
    name-server 127.0.0.1
    ntp {
        server 1.ubnt.pool.ntp.org {
        }
    }
    options {
        reboot-on-panic true
    }
    syslog {
        global {
            facility all {
                level notice
            }
            facility protocols {
                level debug
            }
        }
    }
    time-zone Asia/Tokyo
    traffic-analysis {
        dpi enable
        export enable
    }
}
traffic-control {
    smart-queue QoS {
        download {
            ecn enable
            flows 1024
            fq-quantum 1514
            limit 10240
            rate 70mbit
        }
        upload {
            ecn enable
            flows 1024
            fq-quantum 1514
            limit 10240
            rate 70mbit
        }
        wan-interface pppoe0
    }
}
vpn {
    ipsec {
        auto-update 3600
        auto-firewall-nat-exclude enable
        esp-group ESP-1 {
            compression disable
            lifetime 1800
            mode tunnel
            pfs enable
            proposal 1 {
                encryption aes256
                hash sha1
            }
            proposal 2 {
                encryption 3des
                hash md5
            }
        }
        ike-group IKE-1 {
            ikev2-reauth no
            key-exchange ikev2
            lifetime 3600
            proposal 1 {
                dh-group 2
                encryption aes256
                hash sha1
            }
            proposal 2 {
                dh-group 2
                encryption aes128
                hash sha1
            }
        }
        ipsec-interfaces {
            interface eth0
        }
        nat-networks {
            allowed-network 0.0.0.0/0 {
                exclude 10.0.XX2.0/22
            }
        }
        nat-traversal enable
        site-to-site {
            peer XXX1.duckdns.org {
                authentication {
                    id XXX2.duckdns.org
                    mode pre-shared-secret
                    pre-shared-secret XXXXXXXX
                    remote-id XXX1.duckdns.org
                }
                connection-type initiate
                default-esp-group ESP-1
                ike-group IKE-1
                ikev2-reauth inherit
                local-address 0.0.0.0
                tunnel 1 {
                    allow-nat-networks disable
                    allow-public-networks disable
                    local {
                        prefix 192.168.111.2/32
                    }
                    remote {
                        prefix 192.168.111.1/32
                    }
                }
                tunnel 2 {
                    allow-nat-networks disable
                    allow-public-networks disable
                    local {
                        prefix 192.168.112.2/32
                    }
                    remote {
                        prefix 192.168.112.1/32
                    }
                }
            }
        }
    }
    l2tp {
        remote-access {
            authentication {
                local-users {
                    username XXXXX {
                        password XXXXXXXX
                    }
                }
                mode local
            }
            client-ip-pool {
                start 10.0.XX2.141
                stop 10.0.XX2.150
            }
            dns-servers {
                server-1 10.0.XX2.1
                server-2 [nifty-dns-1]
            }
            idle 1800
            ipsec-settings {
                authentication {
                    mode pre-shared-secret
                    pre-shared-secret apple888
                }
                ike-lifetime 3600
                lifetime 3600
            }
            mtu 1280
            outside-address 0.0.0.0
        }
    }
}

さらに両方の拠点のブリッジ ( br0 ) で IGMP Snooping を無効にします。

# SSH で EdgeRouter にログインして下記コマンドを入力
sudo echo 0 > /sys/devices/virtual/net/br0/bridge/multicast_snooping

さらに再起動後にもこのコマンドが実行されるよう、下記の内容のスクリプトを /config/scripts/post-config.d/ フォルダー内に適当なファイル名で保存します。

#!/bin/bash
sudo echo 0 > /sys/devices/virtual/net/br0/bridge/multicast_snooping

これで2拠点が常時レイヤー2接続されることになります。・・しかし手間もかかるしミスを犯す可能性もかなり高いので・・やはりおすすめはソフトイーサかなと思います。

The post EdgeRouter 6P – 12. 自宅と実家を L2 VPN で一体化する ( L2TPv3 Bridging ) appeared first on yabe.jp.

]]>
https://yabe.jp/gadgets/edgerouter-6p-12-l2tpv3-bridge/feed/ 0 10099
EdgeRouter X – 番外編3. 便利な機能まとめ https://yabe.jp/gadgets/edgerouter-x-s3-suggested-use-cases/ https://yabe.jp/gadgets/edgerouter-x-s3-suggested-use-cases/#comments Mon, 11 Jun 2018 03:55:25 +0000 https://yabe.jp/?p=10112 そういえば各記事の文章が長すぎて、興味はあるがいまいちこのルーターが何が便利なのかわからん、と友人にお叱りをいただいてしまったので、このルーターがどんなことができるかいくつか簡単にまとめてみたいと思います。

The post EdgeRouter X – 番外編3. 便利な機能まとめ appeared first on yabe.jp.

]]>
え、まだルータールーター言ってんの!?・・とか言わないでください・・。

そういえば各記事の文章が長すぎて、興味はあるがいまいちこのルーターが何が便利なのかわからん、と友人にお叱りをいただいてしまったので、このルーターがどんなことができるかいくつか簡単にまとめてみたいと思います。

VPN で海外から日本のコンテンツを観る
もっとも基本的なリモートアクセス VPN を設定するやり方です。日本の実家等に EdgeRouter を設置して、 VPN サーバーとして使います。これで日本の TVer や日本の Netflix が観られるようになります。また実家のルーターがしょぼい場合は接続速度が速くなって実家の人々も満足ですね。有料 VPN サービスと同じように Mac や iPhone から接続でき、かつ実家経由なので Netflix 等にも有料 VPN サービスのようにブロックされません(ただし実家がたまたま大手有料 VPN サービスを経営してる場合はダメかも)。使うときは Mac や iPhone から VPN (L2TP) をオンにする必要があり、 VPN がオンの間は全てのトラッフィクが日本経由になるので、通信速度がちょっと遅くなります。

初期設定 ダイナミック DNS リモートアクセス VPN

離れた2拠点の LAN 同士をつなぐ (レイヤー3 VPN )
実家と自宅、等2つの拠点にそれぞれ EdgeRouter を置き、その LAN 同士を拠点間 VPN で常時接続できます。例えば実家に置いてあるファイルサーバに、上記のような VPN をオンにする作業をしなくても、いつでもアクセスできるようになったりします。実家にあるルーターも自宅から設定できます。ただしレイヤー3接続なので、レイヤー2接続が必要なもの(例えば DLNA や iTunes ホームシェアリング等)は使えません。

初期設定 ダイナミック DNS 拠点間 VPN

自宅 LAN から特別な操作をしなくても日本のコンテンツが観られるようにする
これが EdgeRouter を使う甲斐がある機能の1つです。上記のような VPN をオンにする、等の操作をしなくても、自宅の LAN からまるで日本にいるかのように日本の TVer や Netflix が観られるようになります。自宅内の Mac や iPhone や PS4 は特になにもせずそういったサイトが観られるようになります。ルーターがアクセスする先のサイトに応じて、普通にインターネット経由でアクセスしたり、拠点間 VPN 経由でアクセスしたり、等の文字通りルーティングを行います。自宅と実家に1台ずつ EdgeRouter が必要です。

初期設定 ダイナミック DNS 拠点間 VPN Policy Based Routing Domain Based Routing

FaceTime やストリーミングを途切れにくくする
QoS という機能を使って、 FaceTime や映画のストリーミング等のリアルタイム性が重要な通信が途切れにくくなるようにできます。接続回線が遅い時に特に有効です。 EdgeRouter では FQ_codel を利用した QoS が使えます。

初期設定 QoS

AirPrint や iTunes ホームシェアリングを VPN を越えて使う
AirPrint や iTunes ホームシェアリングなどの機能は、 Bonjour というプロトコルを使っています。 Bonjour は基本的に同じ LAN 内でしか動きませんが、 EdgeRouter の mDNS Reflector という機能を使うと、拠点間 VPN などで接続された複数の LAN 間で Bonjour が動くようになります。

初期設定 ダイナミック DNS 拠点間 VPN Wide Area Bonjour

実家経由で地デジを観る (レイヤー2 VPN )
実家と自宅、等2つの拠点にそれぞれ EdgeRouter を置き、2つの LAN で Ethernet フレームが行き来できるようレイヤー2レベルで一体化できます。これにより Ethernet を介して LAN 内で動作するアプリケーションがほぼ一通り太平洋を越えて動くようになります。なぜこれがここまで私を駆り立てたのか皆目見当もつきませんが、足掛け3年、とうとうやり遂げました。おかげで実家の地デジがカリフォルニアの自宅から観られるようになりました。ただし地デジチューナーは、 NexTV-F 規格制定以降のモデル(「リモート視聴」対応のやつはほぼそれ)だと「 RTT 7ms 以下」という制限があってこれでも動きません。

L2TPv3 ブリッジ

ちなみに EdgeRouter の設定は激ムズでしたが、最強のソフトウェア VPN 、 SoftEther を使うと超あっさり実現できます。 Mac mini を2台、実家と自宅に置くだけです。こっちの方が圧倒的に簡単で、成功率が高いです。

Mac と SoftEther で拠点間 L2 VPN

The post EdgeRouter X – 番外編3. 便利な機能まとめ appeared first on yabe.jp.

]]>
https://yabe.jp/gadgets/edgerouter-x-s3-suggested-use-cases/feed/ 1 10112
Movies I saw in 2017 https://yabe.jp/thoughts/movies-i-saw-in-2017/ https://yabe.jp/thoughts/movies-i-saw-in-2017/#respond Thu, 11 Jan 2018 11:43:32 +0000 https://yabe.jp/?p=9785 毎年年末年始になると1年放置してしまった罪悪感から突然更新するこのブログですが、今年もそうしてみます。

The post Movies I saw in 2017 appeared first on yabe.jp.

]]>
毎年年末年始になると1年放置してしまった罪悪感から突然更新するこのブログですが、今年もそうしてみます。
特にホットな話題が思いつかなかったので、市井のブログっぽく昨年1年の間に観た映画の感想なんぞ記してみようかと思います。でもきっちり書いてたらとても大変なので、すごく乱暴に書くことにします。ごめんなさい。

LIFE!/ライフ

ベン・スティラーが好きなので観ました。まぁまぁ。でもこの映画で “zoned out” という言い回しを覚えて会社で使ったりできるようになりました。


ハドソン川の奇跡

USエアウェイズ1549便不時着水事故と、その後の事故調査に焦点を当てた作品。ハドソン川に不時着して死者ゼロだったサレンバーガー機長は、国家運輸安全委員会から不時着が判断ミスであったという疑いをかけられますが、その疑いを公聴会で見事に晴らすシーンが痛快です。苦悩にさいなまれるトム・ハンクスの演技が光りますが、それよりも事故と公聴会、だけで1本の映画にしてしまったクリント・イーストウッドがすごい。面白かった。


ファインディング・ドリー

ファインディング・ニモの続編です。面白かった。


インフェルノ

ダ・ヴィンチ・コードのラングドン教授の3作目。本人いきなり記憶を失っての登場が斬新でしたが、陰謀論的な切り口が衝撃的だった1作目からすると神秘性も薄れ、全体的にはまぁまぁ。最後の貯水池でのドタバタ劇が若干シラケ気味でした。


ジャック・リーチャー NEVER GO BACK

トム・クルーズのジャック・リーチャーシリーズの2作目。面白くなかった・・というか何も覚えてません。


ザ・コンサルタント

しがない会計士が実は凄腕の殺し屋という話です。まぁまぁ。設定は突飛なのに、意外と真面目路線で、だけど中途半端などんでん返しもあり、モヤモヤが残ります。もっと会計士ならではの、電卓1個で敵を次々にやっつけるシーンとかあってもよかったかと思います。


ローグ・ワン/スター・ウォーズ・ストーリー

ディズニーが始めたスター・ウォーズ外伝の1作目。エピソード4の直前のお話で、ファンの間では長年の疑問だった、なぜデス・スターはたった爆弾1発で大爆発してしまうようなアホな設計になってたのか、という問いに見事に答える名作です。文句なしに面白かったです。2017年のベスト映画だったと言えます。あ、正確には2発か。


スター・トレック BEYOND

クリス・パインになってからの、スター・トレックの3作目。安定の面白さ


LUCY/ルーシー

そこらへんにいた女子大生が、麻薬の過剰摂取によってとつぜん超人類になってしまうお話。映画自体はまぁまぁでしたが、ものすごいバカそうな女子大生が、急速にものすごい頭がよさげになるスカーレット・ヨハンソンの演技が素晴らしいです。リュック・ベッソンなのにそんなにギャグシーンが無く、ラストシーンはかなり拍子抜けします。


モダン・タイムズ

言わずと知れたチャップリンの代表作。資本主義とチョビ髭を風刺しています。面白かった。著作権が切れているので YouTube で堂々と観られます。


ゴースト・イン・ザ・シェル

攻殻機動隊の実写リメイク。漫画・アニメ原作のハリウッド版なので危惧していましたが、まずまずの出来。ビートたけしのセリフ棒読みだけなんとかしてほしい。いや、そんなにスカーレット・ヨハンソンが好きなわけではありません。


十二人の怒れる男

法廷もの映画の金字塔。裁判所の控え室を舞台に、12人の陪審員が、ある少年の事件の評決に達する過程のみを描きます。先入観とはなにか、正義とはなにかを問う作品です。会社の研修で取り上げられ、そういえば観たことがなかったなーと思って観ましたが、とても面白いです。三谷幸喜の「12人の優しい日本人」も面白いです。


プラダを着た悪魔

雑誌 VOGUE のカリスマ編集長アナ・ウィンターがモデルといわれる鬼編集長と、そのアシスタントになったファッションに無頓着な女の子がぶーぶー言いながら頑張るお話。これも会社の研修で取り上げられたので、1度観たことあったけどもまた観てみました。働くとはどういうことか、という視点で観ると、ポップな外見とは裏腹に実はものすごい示唆に富んだ深い話であることに気づかされます。上司や環境に恵まれない中で働くすべての人に観てもらいたいです。たまたま自分の部署にに入ってきたファッションに無頓着な女の子がアン・ハサウェイだった場合、何をどうしたら自分が生き延びられるのか、という視点で観てもいいです。


ラ・ラ・ランド

まぁまぁ


パッセンジャー

120 年かけて他の恒星に移住する宇宙船で、機器の故障からまだあと 90 年というところで人工冬眠から目覚めてしまった人のお話。登場人物が普通の感覚を持った人間だったら絶対に精神の均衡を保っていられないんではないかと思いますが、映像やハイテク機器の描写や無重量のプールのシーンやロボバーテンダーがかっこいいので全部よしとします。こういう事故があったらどういう風に賠償する契約になっていたのかが気になります。面白かった


ファウンダー ハンバーガー帝国のヒミツ

マクドナルドの創業と、そのシステムに惚れ込み規模拡大に心血を注いだレイ・クロックに焦点を当てた伝記的映画です。いまでこそ、どちらかというとおいしさとは反対側にいるファストフードの権化のように評されることが多いマクドナルドですが、実はこれほどまで味や品質や顧客満足にこだわって生まれた食べ物であることに驚かされます。やはり世界規模になるものは、一味違うんですね。面白かった


イップ・マン 序章

ブルース・リーの師匠、イップ・マンを描いたお話です。ローグ・ワンに出てくるウィルズの寺院の守護者、チアルート役のドニー・イェンが主演で、この頃加入した日本版 hulu でキャンペーン中だったので観ました。朴訥な役のドニー・イェンが本気を出すとめっさ強いさまが面白かったです。


イップ・マン 葉問

こっちもキャンペーン中だったので観ました。敵のボクサーがちょっとアレでしたが、やはり朴訥な主人公が強いさまが面白かったです。3作目は無料でなかったので観てませんが、いつか観たいなぁと思ってます。


ネイビーシールズ

出演者が本当にネイビーシールズの隊員という映画でした。まぁまぁ


ブレイブハート

メル・ギブソン主演で、スコットランド独立をかけて戦ったウィリアム・ウォレスを描いたお話です。ミームで使われることであまりにも有名ですが、そういえば映画自体観たことないなーと思って観ました。まぁまぁ


何者

会社の後輩に勧められたので観た、就活がテーマの若者の映画です。何が言いたいのかいまいちよく分かりませんでしたが、これが歳を取ったということなんだと思っています。ナカタヤスタカの音楽は良かったです。


カウボーイ & エイリアン

19 世紀のアリゾナに宇宙人が飛来して、それを宇宙人の超兵器を持ったカウボーイがやっつけるというお話です。そんなの絶対ガッカリ映画ですが、そこはしかしハリソン・フォードとダニエル・クレイグがなんとかしてくれるんではと仄かな期待を胸に観てみました。ガッカリでした。きっと hulu で観たんだと思います。


ドリーム

邦題にまつわるすったもんだで話題になった作品です。宇宙開発競争のまっただなかのアメリカで、逆境にも負けず NASA で活躍した3人の女性数学者の姿に胸を打たれます。面白かった


ゴールド/金塊の行方

1990 年代に実際にあった金鉱採掘にまつわる詐欺事件を描いたお話です。まぁまぁでしたが、怪しさ全開の冴えない採掘業者がマシュー・マコノヒーなのがなんとも素敵です。ハウス・オブ・カードのルッソの人が出てくるので、またお酒で失敗しないか心配になったりしました。


バイオハザード:ザ・ファイナル

もう何回やってるか分からない、バイオハザードの映画版6作目です。6回やるなんてアナタ相当ゾンビが好きなのね・・というミラ・ジョボビッチにただただ感服するばかりです。映画としては普通でした。ローラ出てます。


フォース・プラネット

土壌から水分を生成することに成功した技術者が、火星移住の担当者となって宇宙船で火星に行くお話です。微妙です。いやーだからっていきなりエンジニア宇宙に送る?とか宇宙服がダサいとかの疑念が邪魔していまいちストーリーに集中できない上に、内省的なシーンが続くので飽きます。オデッセイと 2001 年宇宙の旅を足して薄めたような印象でした。


オートマタ

近未来で、密かに自意識を持つにいたったロボットを冴えない保険調査員が助けるお話です。隠れた名作とされてるっぽいので観ましたが、面白くなかったです。なんで主人公がアントニオ・バンデラスなのかもよく分かりません。


LOOPER/ルーパー

これも隠れた名作とされているっぽので観ましたが、わりと面白かったです。タイム・トラベル業界の殺し屋のお話ですが、オチが人間味あふれていて感動でした。スター・ウォーズ/最後のジェダイの監督の作品です。


ザ・サークル

エマ・ワトソンとトム・ハンクス主演の、ちょっと未来のスタートアップと SNS がテーマのお話ですが、ひどい映画でした。


パイレーツ・オブ・カリビアン/最後の海賊

ジャック・スパロウさんの4作目。いろいろツッコミどころはありますが、ジョニー・デップだしよしとしましょう!面白かった


ブレードランナー

言わずと知れたハリソン・フォード主演の SF の金字塔。続編公開にあわせて hulu で限定公開されていたので観ました。最初に観たのは中学生くらいで、難しすぎて意味がよくわかりませんでしたが、大人になって観てみてストーリーがわかってよかったです。でもまぁ 2017 年に観る映画としては微妙だった気がします。


ネイビーシールズ:オペレーションZ

副大統領救出に向かったネイビーシールズがソンビと戦うお話。ゾンビ映画好きなのでつい観てしまいましたが、驚くほどひどい映画でした。映像は安っぽいし、演技は下手だし、ストーリーは深みゼロだし、ここぞという所でゾンビが攻撃せず待っててくれたりします。大変後悔しました。


スーパー・チューズデー ~正義を売った日~

ジョージ・クルーニーとライアン・ゴスリングによる大統領選に焦点をあてたお話です。ちょっと古い映画ですが、これは面白いです。駆け引きやスキャンダルに絡んで、理想と現実に揉まれる主人公に引き込まれます。


アイアン・スカイ

2018 年に月面に着陸したら、なんとそこにナチス・ドイツが隠れていた!という SF コメディで、なんかそれだけ聞くと面白そうだったんですが、微妙でした。もうちょっとバカバカしくてもよかったかなという気持ちと、もうすでにバカバカしすぎているという気持ちの間で揺れ動いております。


フライト・ゲーム

リーアム・ニーソン扮する航空保安官が、警備のために乗り込んだフライトで、正体不明の犯人から乗客を守る密室サスペンスもの。大西洋上空で正体不明の犯人から殺人予告のメールが入り、密室である機内で次々に殺人が起こる様にドキドキしましたが、最後のオチが若干拍子抜けだったのでまぁまぁとしたいと思います。しかしリーアム・ニーソンの周りにいるとほんとに誘拐や殺人ばっかり起こるので、そろそろ政府は規制とか逮捕とかしたほうがいいと思います。


ブリッジ・オブ・スパイ

冷戦下でソ連の捕虜となったスパイの解放に人知れず尽力した、実在の弁護士を描いたお話です。面白いです。国民の反感をものともせず、捕まったソ連のスパイの弁護で正義と信念を貫き、そしてそのおかげでソ連で捕まった自国のスパイを解放できることになり、でも表立って交渉できない政府の代わりに民間人として秘密裏に交渉し、寒い東ベルリンで頑張って解放に成功し、ついでに東ベルリンで捕まったかわいそうな大学生も解放しちゃうという偉業に感動します。しかもノーギャラ。すごい人です。


白雪姫と鏡の女王

この映画大好きで久しぶりに観ました。コミカルな現代風白雪姫ストーリーの中に、加齢や財政難に悩む女王の苦悩や、忠義と保身に悩む召使いの苦悩、正義と孤独と日々の生活に悩む7人の小人の苦悩とアホな王子が見事に描かれています。ヒロインのリリー・コリンズもかわいいし、いつ観ても面白いです。また観ます。


BLAME!(ブラム)

日本初の Netflix オリジナル映画。コミックが原作のようです。使っている語句やテクノロジーのコンセプトに新しいものもありますがが、 SF 映画としては特に新しくないように感じました。まぁまぁ。ただ作中に出てくる、水でつくる合成食料は超おいしそうでした。


13 Going On 30

13 歳の女の子が、朝起きると突然 30 歳のキャリアーウーマンになっていて、いろいろすったもんだした挙句、本当の愛に気づくコメディです。可もなく不可もなくです。 80 年代の懐メロが多用されます。


ダンケルク

第二次大戦でのダンケルクを舞台に、撤退する兵士たちとそれに関わった人々を描いた作品です。クリストファー・ノーラン節というか、抑え気味で淡々とした映像が戦争映画としては新鮮でした。自分のボートで兵士を救出にいくおっちゃんがカッコいいです。


ダークタワー

最近よくある、ラノベ的なもの原作の SF 映画です。悪いマシュー・マコノヒーが新鮮ですが、話は面白くなかったです。あれ、これ原作スティーブン・キングなの・・ラノベとか言ったらまずかったかな・・。


ワイルド・スピード ICE BREAK

知人に中国で1番売れたハリウッド映画だと聞いたので観てみました。バカバカしい内容なんじゃないかと不安でしたが、あまりにもバカバカしいことが次々に起こりまくるので、逆に感服しました。


エイリアン:コヴェナント

いやー、エイリアン大好きなんですが、賛否両論が爆発した前作のプロメテウスほどではないものの、登場人物が頭が悪すぎてズッコケる場面が多くて、いまいちでした。でも特に人類最大の謎とかは関係なくて、単に暴走したアンドロイドが悪いんだということがわかって、スッキリしました。早く次が観たい。

ちなみにプロメテウスに関してはこれに完全に同意です。


キングスマン

最近2作目が公開された、新世代スパイもの映画の1作目。若干暴力シーンが多い気がしますが、キレのある大量殺戮シーンや世界中の偉い人が一斉に死ぬシーンなど、確かにいままでのスパイものとは一味違いました。コリン・ファースかっこよすぎです。面白かった


ヴァレリアン 千の惑星の救世主

最近流行りのコミック原作ものということで、若干穿って観ましたが、さすがリュック・ベッソン。映像美とバカバカしさが高度に融合していて、面白かったです。ヒロインが例によってべっぴんさんですが、例によってまたリュック・ベッソンに娶られてしまうと思います。


スター・ウォーズ/最後のジェダイ

というわけで 2017 年のラストを飾るのはこれでした。うーーーーん、スター・ウォーズ好きだけど、前作よりいいけど、もっと面白くあってほしかった。でもヨーダも出てきたし、デイジー・リドリーかわいいし、ルークも今回はセリフあるしよしとしますか。しかしジェダイはみんなメンタルが弱いというか、もっと寺院にカウンセラーとか置いた方がいいと思います。見せ場は「手先に感じるそれがフォースだ!」のシーンと、レイア姫遊泳シーン、カイロ・レン半裸タイツシーンでしょうか。


というわけで、 2018 年もよろしくお願いします!

The post Movies I saw in 2017 appeared first on yabe.jp.

]]>
https://yabe.jp/thoughts/movies-i-saw-in-2017/feed/ 0 9785
Best Products of 2016 https://yabe.jp/gadgets/best-products-2016/ https://yabe.jp/gadgets/best-products-2016/#respond Mon, 27 Mar 2017 04:44:25 +0000 https://yabe.jp/?p=8853 先日ひょんなことから友達と世の中でどんな電源タップがいけてるか的な議論になり、その流れで電源タップを次のブログ記事にすると約束してしまいました。が、電源タップだけだとさすがに全然記事にならないので、知恵を絞った結果無理やり2016年に買ったベストな商品というような記事にして、そこに電源ケーブルを忍び込ませることにしました。

The post Best Products of 2016 appeared first on yabe.jp.

]]>
先日ひょんなことから友達と世の中でどんな電源タップがいけてるか的な議論になり、その流れで電源タップを次のブログ記事にすると約束してしまいました。が、電源タップだけだとさすがに全然記事にならないので、知恵を絞った結果無理やり2016年に買ったベストな商品というような記事にして、そこに電源ケーブルを忍び込ませることにしました。
いきなりネタバレおよびいいわけから入ってしましましたが、そいういうわけで2016年に買って気に入ったプロダクトをいくつか紹介してみます。

LD-GPSST

ツメ折れ防止スーパースリムLANケーブル(Cat6準拠) LD-GPSSTWHシリーズ
エレコムの極細 LAN ケーブルです。新設計ショートコネクタ搭載とありますが、いや本当にコネクタが小さい。そしてこれほどオシャレなデザインのコネクタは見たことがありません。他の LAN ケーブルと比べて群を抜いて小さく、また洗練された雰囲気を漂わせています。ケーブルも最近流行りのスーパースリムタイプですが、若干コシがあり、ものすごく柔らかいケーブルがいい人はバッファローの BSLS6SUWH2 方がいいかもしれません。残念ながらどうも商品ライフサイクル的には終盤ぽいので大量買いしました。

EHC-G05PN-JW

1000BASE-T対応 スイッチングハブ EHC-G0XPNシリーズ
またしてもエレコムです。これはギガビット対応のスイッチングハブですが、ただのスイッチングハブではありません。「プラスチック筐体・白・5ポート・電源内蔵・ギガビット対応」スイッチングハブは現時点で世界でただ一つこの機種だけです。世界でただ一つなのでせっせと何個も買っていますが、「Giga」のロゴがなくなればもっといいのに思ってやみません。ちなみに8ポートでよければバッファローの LSW5-GT-8NP の方がよりかっこいいです。しかしアメリカにはなんでこういった電源内蔵のハブやモデムが全然ないんですかね。もっといい電源内蔵のスイッチングハブをご存知の方は是非ご一報ください!

ちなみに電源内蔵関連の話題としては、最近ケーブルモデムで珍しく電源内蔵のものを見つけて買いました。 Arris の CM820 です。リテールで市販されてませんが、よく探せばアマゾンなんかで新品を売ってます。 Comcast 対応です。もし ケーブルモデムに Wi-Fi がついてても嫌でなければ、元モトローラの方の Arris SBG6782-AC なんかが電源内蔵です。


T-NSL-26

ほこり防止シャッター付きスリムタップ
これもエレコムです。エレコムは昔から若干デザインにこだわった電源タップをちょこちょこ出してます。このモデルは余計な装飾がなく超シンプルで、かつ AC アダプターを複数挿しても重ならない横向きで余裕を持った配置がニクい電源タップです。3つぐらい買いました。

エレコムの電源タップはこの AVT-D3-26 シリーズも気になってます。やはり隣と干渉しない配置がウリですが、果たして AC アダプタを両側に挿した時にどう見えるのかが気になるところです。

MJ-JT11A

電源周辺機器
電源タップといえば、この無印の組み合わせるタイプも有名です。最近はモデルチェンジしてロック付きになりました。実はこのシリーズの超短い(10センチ)延長コードが、1つ出張に持っていくととても便利です。航空機内のコンセントがちょっと奥まったところにあったり、取引先の会議室の電源タップがラップトップの AC アダプターでぎゅうぎゅうになっていたりするときに1個あると大活躍します。


SRS-X33

ワイヤレスポータブルスピーカー SRS-X33
よくあるタイプの Bluetooth スピーカーに見えますが、実はかなりの重低音が出ます。実は BOSE 対策で開発されたとかしないとか・・。値段も $99 とかなりお買い得だったと思います。後継の SRS-XB3 は防沫仕様で、かつ最大 24 時間もつバッテリー内蔵、かつ iPhone の充電も可能という欲張り仕様になったようです。


mifold

Grab-n-Go Car Booster Seat
Indiegogo 出身の超小型ブースターシートです。市販まで時間がかかったりしましたが、きちんとしかるべき認証を取り、しっかりアメリカで市販してしまいました。ほんとに小さいので、旅行の時や、据え置きのカーシートを付けてない方の車で出かける時にとても重宝してます。


Setu Chair

Setu – Office Chair – Herman Miller
ハーマンミラーのオフィス・会議室用の椅子です。アーロンチェア等フル機能のやつほど大型大迫力でなく、でもわりとリクライニングが良さそうだったので購入しました。20世紀プロダクトデザインの金字塔、イームズ夫妻デザインのアルミナムチェアを彷彿とさせるシルエットが素敵です。ちなみに座りごごちはアルミナムチェアの方が上でした・・買えないけど・・。


Madagascar Vanilla Pot de crème

Pots de crème | Petit Pot
とてもおいしいクリーム・プリン系のデザートです。バニラもしくはレモンカード味がおすすめです。 Whole Foods 等に置いてあります。


White Ale

White Ale – Saint Archer Brewery
サンディエゴのブルワリー、 Saint Archer の白ビールです。おいしくて、瓶だけでなく缶があって、缶がかっこいいという3拍子そろったビールです。これも Whole Foods 等でよく見かけます。


というわけで、2016年買ってよかったプロダクトをまとめてみました。あ、こっそり電源タップがいつくかまぎれてるの、気がつきました?

The post Best Products of 2016 appeared first on yabe.jp.

]]>
https://yabe.jp/gadgets/best-products-2016/feed/ 0 8853
EdgeRouter X – 番外編2. パフォーマンステスト https://yabe.jp/gadgets/edgerouter-x-s2-performance-test/ https://yabe.jp/gadgets/edgerouter-x-s2-performance-test/#respond Tue, 17 Jan 2017 06:53:41 +0000 https://yabe.jp/?p=8507 EdgeRouter X には2つのハードウェア処理高速化オプションがありますが、このオプションを IPsec や OpenVPN と組み合わせた時の、ファームウェア 1.9.0a1 でのパフォーマンスを調べたスレッドをフォーラムに見つけました。

The post EdgeRouter X – 番外編2. パフォーマンステスト appeared first on yabe.jp.

]]>
さてファームウェア 1.9.1 時点での EdgeRouter X には2つのハードウェア処理高速化オプションがありますが、このオプションを IPsec や OpenVPN と組み合わせた時の、ファームウェア 1.9.0a1 でのパフォーマンスを調べたスレッドをフォーラムに見つけました。

現在 EdgeRouter X に用意されているハードウェア高速化処理は、下記の2つです。

  • NAT のハードウェア処理
  • IPsec のハードウェア処理

デフォルトではオフですが、下記のコマンドで設定できます。

configure
set system offload hwnat enable
set system offload ipsec enable
commit
save

このオプションを IPsec や OpenVPN と組み合わせた時の、ファームウェア 1.9.0a1 でのパフォーマンスを調べたスレッドをフォーラムに見つけました。

Re: 1.9.0a1 ERX VPN performance

リリースノート等にもあまりパフォーマンスは明示されないことが多いので、興味深いです。せっかくなのでいくつか抜き出してまとめてみました。基本的にには PC – ERX – ERX – PC と直繋ぎでスループットを調べた模様です。公式記録等ではなく、単にあるユーザーが測定しただけのものなので、設定や環境の再現性がない可能性がありますが・・まぁ参考まで。

設定 hwnat ipsec 速度
Ethernet 直結 942 Mbps
ルーティングのみ 296 Mbps
ルーティングのみ ON 933 Mbps
OpenVPN 暗号化なし 65.4 Mbps
OpenVPN 暗号化なし ON 63.2 Mbps
OpenVPN SHA1/BF 24.3 Mbps
IPsec SHA1/AES128 38.4 Mbps
IPsec SHA1/AES128 ON 150 Mbps
IPsec SHA1/AES128 ON ON 214 Mbps

2台を相対して接続した理想的な状態とはいえ・・やはり $49 で IPsec 200 Mbps は大変お買い得ではないかと思います。あ、繰り返しになりますが、 ipsec offload は L2TP を使う時にはオフにしてくださいね。

ちなみに最近、ハードウェアオフロードに関しての公式ヘルプドキュメントが公開されたようです。

EdgeRouter – Hardware Offloading Explained

The post EdgeRouter X – 番外編2. パフォーマンステスト appeared first on yabe.jp.

]]>
https://yabe.jp/gadgets/edgerouter-x-s2-performance-test/feed/ 0 8507
EdgeRouter X – 番外編1. Mac と SoftEther で拠点間 L2 VPN を構築する https://yabe.jp/gadgets/edgerouter-x-s1-l2-vpn-with-softether/ https://yabe.jp/gadgets/edgerouter-x-s1-l2-vpn-with-softether/#comments Mon, 16 Jan 2017 18:07:55 +0000 https://yabe.jp/?p=8475 Mac 上に SoftEther VPN Server をインストールし、拠点間 VPN を設定してみました。

The post EdgeRouter X – 番外編1. Mac と SoftEther で拠点間 L2 VPN を構築する appeared first on yabe.jp.

]]>
さてここまで色々やってきましたが、どうしてももう1つチャレンジしてみたかったのが、 VPN ファンの誰もが憧れる2拠点のレイヤー2接続による完全同一 LAN 化です。最近かなり力づくですがその設定ができたので、同じ悩みを抱えたの人のためにここに設定例を載せてみます。 対象ファームウェアは 1.9.1 です。また使った macOS のバージョンは macOS Sierra 10.12.3 で、ソフトイーサは 4.22 beta です。

レイヤー2接続とは

レイヤー2接続とは、ものすごく乱暴に言えば2拠点が同じ Ethernet (= LAN) に接続されている状態にするということです。

以前の記事の第8項でやった設定では、2拠点は TCP/IP のレベルで接続されているので、レイヤー3接続ということになります。2拠点間がレイヤー2接続されるとなにがいいかというと、 VPN を通じて Ethernet フレームが行き来できるようになります。これにより通常の IP パケット以外の AFP や Bonjour 、そしてマルチキャストやブロードキャスト等が相互に行き来できるようになり、 iTunes / ホームシェアリングや DLNA とかも2拠点を通じて動きます。

この離れた拠点のレイヤー2接続は、昔は大変に難しいことでした。が、近年は VPN の技術が進み、 GRE-bridge や OpenVPN (tap) 、 L2TPv3 、 VPLS 等のレイヤー2 VPN を利用すれば可能です。が、 ルーター等でレイヤー2 VPN を使ってレイヤー2接続する場合には、必ず物理インターフェースである Ethernet のポートと、 ルーター内の VPN のトンネル端を「ブリッジ接続」する必要が出てきます。

ブリッジとは、乱暴に言うと Ethernet フレームをあるインターフェースからあるインターフェースへと全部横流しすることです。しかし EdgeRouter はブリッジが大変に苦手で、スピードがものすごく遅いです。かつブリッジ接続を使う場合は、そのブリッジ接続に関わりのあるすべてのインターフェースで速度が遅くなってしまうというオマケつきで、普通にインターネットする場合のスピードもついでに遅くなってしまいます。ハードウェアオフロードもオフになってしまいます。

自分も試しに GRE-bridge で自宅と実家をレイヤー2接続してみましたが、実家のインターネットが如実に遅くなり苦情が出ました。また GRE は小さい MTU の扱いが苦手と聞きます。レイヤー2接続は速度と遅延の少なさが非常に重要なので、この方法はどうも最適解ではなさそうです。しかし、どうしてもレイヤー2接続は諦められない。でも遅いのはイヤだ。私はしばらく悩みました。

じゃあどうするか

如何せん EdgeRouter がブリッジが不得意なので、プライドを捨てブリッジの得意な人にやってもらうことにしました。というわけで、世界で1番ブリッジ接続が得意なことで有名な ソフトイーサ でやってみることにしました。 EdgeRouter のフォーラムなんかを見ると、 Debian 用にコンパイルして EdgeRouter にインストールしちゃっている人もいるようですが、かなり CPU パワーの必要な処理なので、残念ながらあまり EdgeRouter 上ではパフォーマンスが出ないようです。 Rasberry Pi もしかり。というわけで素直に Mac mini を実家と自宅に用意して、そこにソフトイーサをインストールすることにしました。

SoftEther とは

ものすごく簡単にものすごく高度な VPN が構築できるソフトウェアです。ほとんどのファイアウォールを通過してしまう強力な接続性、世の中のほぼ全ての競合 VPN を上回るスピード、高スループットのブリッジ、 DDNS や NAT 回避機能 (APN Azure) まで内蔵し、かつフリーウェアとは驚異でしかありません。ただ Mac 版や Linux 版は以前までローカルブリッジがつかえない等フル機能でなく、またドキュメントや管理アプリケーションが手薄なのがネックでした。しかし去年あたりから、ようやく最近ほぼフル機能の Mac 版や Linux 版が出るようになり、そこそこの環境が整いました。(まだドキュメント等は大幅に手薄ですが・・)

概要

今回やることはこんな感じです。

各拠点にそれぞれ Mac mini をソフトイーサ駆動用に設置します。 Mac mini にはそれぞれ Thunderbolt Ethernet アダプタ接続して Ethernet ポートが1台につき2つとなるようとします。ソフトイーサは各拠点でそれぞれ仮想 HUB を作成し、 Thunderbolt Ethernet ポートとそれぞれローカルブリッジ接続します。拠点1のソフトイーサはサーバーとなり、仮想 HUB にアクセスしていいユーザーアカウントを作成します。拠点2でのソフトイーサはブリッジ用となり、拠点2の仮想 HUB から拠点1の仮想 HUB へ作成したアカウントでカスケード接続(つまり仮想 HUB 同士をまたブリッジ接続すること)を行います。ものすごく乱暴に概略図を書くとこんな感じです。

以上のようなやり方で、拠点1と拠点2の LAN がブリッジでレイヤー2接続され、晴れて Ethernet フレームが拠点間を同一の LAN として行き来するようになります。

用意したもの

  1. Mac mini x2
  2. Apple Thunderbolt – ギガビット Ethernet アダプタ x2
  3. LAN ケーブル x4

レイヤー2接続は速度や遅延が重要なので、今回は極力有線にします。ソフトイーサをローカルブリッジを用いた拠点間接続 VPN で使う場合は、通常の Ethernet ポートの他にローカルブリッジ用の Ethernet ポートを増設するのが推奨されるようなので、 Thunderbolt Ethernet アダプタを追加しました。

ちなみに、下記の方法をとれば、 Mac でも内蔵 Ethernet ポートのみでローカルブリッジが実現できるようです。

SoftEther VPNをMacでローカルブリッジする

下準備

各拠点に1台ずつ Mac mini を設置します。 Thunderbolt – ギガビット Ethernet アダプタを接続し、内蔵の Ethernet ポートとアダプタの Ethernet ポートをそれぞれ EdgeRouter の、同じ switch0 に属してる Ethernet ポートに接続します。

EdgeRouter のポートが足りない場合はスイッチングハブを使ってポートを増やすとよいでしょう。Mac mini は基本的な設定を済ませておいて、管理者ユーザーが画面共有で遠隔地からリモートで操作できるようにしておきましょう。

ただし、 IPsec や L2TP がうまく動かなくなるので、どこでも My Mac は必ずオフにしましょう。どこでも My Mac がなくても、操作したい端末の IP アドレスさえわかれば、画面共有は使えます。

macOS Sierra: 画面共有を設定して使用する

macOS Sierra: どこでも My Mac を使う

そして、2拠点がレイヤー2接続されることになるので、両拠点の EdgeRouter の LAN 側の IP アドレスをそのように調節します。こういう場合基本的には両拠点をまったく同じネットワークアドレス(192.168.1.0/24 等)にしてしまうことが多いです。しかし今回は両拠点の LAN で稼働するマシンが 60 台程度あり、 IP アドレスを変更したり重複しないように確認したりが面倒だったので、ネットワークアドレスは同じにせず、サブネットマスクを変えて2拠点が同一サブネット扱いになるようにしました。

EdgeRouter 1 EdgeRouter 2
LAN 側 IP アドレス (Switch0) 192.168.1.1/22 192.168.2.1/22
DHCP サブネットマスク 192.168.1.0/22 192.168.2.0/22
相手側 LAN への Static Route 削除 削除
UPnP2 / Block 4500 Port 192.168.1.0/22 192.168.2.0/22

各拠点の別々のサブネットをそのまま使うので、各拠点の端末に DHCP で割り当てている固定 IP アドレスや、 L2TP 用の IP アドレスプールに変更は必要ないはずですが、一応確認しておくといいかもしれません。

TCP/IP で通信をする端末はサブネットマスクによって相手先が同一 LAN にいるか、それとも同一 LAN にいないのでルーターにパケットを送るかを決定します。ウェブでも書籍でも様々に説明されていることですが、サブネットマスクの違いによる「同一の LAN」とみなされる範囲の違いをものすごく簡単にまとめるとこうなります。

例1 (192.168.1.1/24) 例2 (192.168.1.1/22)
IP アドレス 192.168.1.1 192.168.1.1
サブネットマスク 255.255.255.0 255.255.252.0
ネットワークアドレス 192.168.1.0/24 192.168.0.0/22
同一 LAN の IP アドレス範囲 192.168.1.1 – 192.168.1.254 192.168.0.1 – 192.168.3.254

このようにサブネットマスクをうまく調節することによって、ネットワークアドレスが違っていても、2拠点を同一の LAN と見なすように設定することができます。ですが、この2拠点が相互に通信できるようになるのはソフトイーサの設定が済んでからです。ここまでの場合、いくらサブネットを調節したとはいえ、両拠点間でレイヤー2パケット送受信するしくみがないうえに、両拠点間を結ぶ IPsec のレイヤー3接続トンネルを使う static routing の設定を削除してしまったので、一時的に両拠点は一切通信ができなくなります。なので、ここからは適宜 L2TP を使って設定を進めてください。

つづいて、ソフトイーサが必要なポートを使えるようポートフォワードの設定をします。 Mac mini には下記のように固定プライベート IP アドレスを割り振り、内蔵 Ethernet の IP アドレスに対して 5555番をポートフォワードします。

Mac mini 1 Mac mini 2
内蔵 Ethernet 192.168.1.101 192.168.2.101
Thunderbolt Ethernet 192.168.1.102 192.168.2.102
EdgeRouter 1 EdgeRouter 2
Original Port 5555 5555
Protocol Both Both
Forward-to address 192.168.1.101 192.168.2.101
Forward-to port 5555 5555
Description SoftEther SoftEther

これで WAN 側からソフトイーサが接続してきた時に、 LAN 側の Mac mini 内のソフトイーサにパケットが届くことになります。実はサーバーにならない側のソフトイーサには不要な設定ですが、なんとなく揃えてみます。後でサーバーにしたくなるかもしれないですし。

最後にソフトイーサがローカルブリッジとしてブリッジ接続することになる、 Thunderbolt Ethernet ポートのポート名を調べます。アップルメニューの「この Mac について」を選び、システムレポートボタンを押します。そのレポートで「ネットワーク」の「場所」欄を見るとポート名が出てます。かなりの確率で Thunderbolt Ethernet は en5 であるようです。

Mac mini 1 Mac mini 2
内蔵 Ethernet en0 en0
Thunderbolt Ethernet en5 en5

SoftEther のインストール

さて、それでは Mac mini にソフトイーサをインストールしてみます。 インストーラやドキュメント類が全然整備されていませんので、色々調べながら慎重に進めます。

  1. Xcode の Command Line Tool をインストール

    SoftEther を make する際に必要になるライブラリをインストールするため、 Xcode の Command Line Tool をインストールします。実は SoftEther を make した時に勝手にインストールされたので、わざわざインストールしなくてもいいかもしれません。下記のページなどにやり方が書いてあります。

    macOS Sierra に Xcode Command Line Tools をインストールする

  2. SoftEther のダウンロード

    SoftEther のウェブページから、 “SoftEther VPN Server” Mac OS X (Intel x64) 版 4.22 をダウンロードします。拡張子「.tar.gz」のファイルがダウンロードされるはずです。

  3. ファイルの伸張とコンパイル

    ターミナルを開き、下記のコマンドを入力します。ファイルは、ダウンロードフォルダにダウンロードしたとします。

    cd ~/Downloads/
    tar zxvf softether-vpnserver-v4.22-9634-beta-2016.11.27-macos-x64-64bit.tar.gz
    cd vpnserver
    make
    

    ここで使用許諾への同意を尋ねられます。またその後動作環境のチェックも行われます。「すべてのチェックに合格しました。このシステム上で SoftEther VPN Server / Bridge が正しく動作する可能性が高いと思われます。」と表示されれば合格です。詳しくは下記を参照してください。

    7.3 Linux へのインストールと初期設定

    ちなみにソフトイーサを日本語で動作させたい場合は、同じフォルダ内の “lang.config” ファイルを書き換えます。

  4. ファイルの移動とアクセス権の設定

    ファイルを移動し、 root 以外で実行されないようアクセス権を設定します。

    cd ..
    sudo mv vpnserver /usr/local/
    cd /usr/local/vpnserver/
    sudo chmod 600 *
    sudo chmod 700 vpncmd
    sudo chmod 700 vpnserver
    
  5. 動作確認

    では試しに SoftEther VPN Server を起動してみましょう。フル機能で動作させるには root 権限で起動させます。

    sudo /usr/local/vpnserver/vpnserver start
    

    きちんとインストールされていれば、 SoftEther が起動します。確認したら一旦止めます。

    sudo /usr/local/vpnserver/vpnserver stop
    
  6. ソフトイーサをバックグラウンドプロセスとして動作するよう設定

    ソフトイーサをユーザーがログインしようがしまいが Mac が起動すると同時に root 権限でバックグラウンドで動作するよう設定します。色々 script をいじるのは大変なので、 Lingon X というアプリを使います。

    Lingon X を起動
    ツールバーの「+」ボタンを押す
    User を root にする
    Name に適当に「 com.lingon.softether.helper 」等を入力
    Run に「 /usr/local/vpnserver/vpnserver start」を入力
    テストボタンを押して動作することを確認
    「 At stratup and when saving 」にチェック
    「 Always 」にチェック
    「 Save 」ボタンを押す
    

    これで終わりです。テストしたので、またソフトイーサが動作しているはずです。

  7. Macを再起動して、再起動後ソフトイーサが起動することを確認

    文字通り再起動して、その後起動コマンドを入力せずともソフトイーサが動作していることを確認します。動いてなければ Lingon X での設定がうまくいってないかもしれません。

  8. ソフトイーサ管理マネージャをインストール

    こんどはソフトイーサの設定のための GUI アプリケーションをインストールし、動作しているか確かめます。

    SoftEther Server Manager for Mac OS X をダウンロード
    伸張し、アプリケーションフォルダに置き、起動
    localhost へ接続する接続設定を作り、 ポート 5555 番で SoftEther VPN Server へ接続
    管理者パスワードを設定
    

    ポートは 5555 番にしましょう。この管理マネージャだけを解説したドキュメントがなかなかありませんが、下記ページを見ると初回接続時のやり方が少しだけ載ってます。

    7.2 Windows へのインストールと初期設定

    上記をそれぞれの Mac で行なって、2台の Mac でソフトイーサが起動している状態にします。

SoftEther の設定

さて、それではソフトイーサを設定して拠点間をレイヤー2接続してみます。ここでは2台の Mac にインストールした SoftEther VPN Server のうち、1つをサーバーとして設定、もう1つをサーバーにカスケード接続する VPN Bridge として設定します。下記2つのページを参考にしました。

拠点間接続 VPN

10.5 拠点間接続 VPN の構築 (ブリッジ接続を使用)

3.4 仮想 HUB の機能

2台の Mac での設定は、それぞれの Mac にソフトイーササーバ管理マネージャーをインストールして、画面共有経由でログインしてやってもいいですし、第3の Mac に管理マネージャーをインストールして、両方の Mac の IP アドレスを指定した接続設定を作って、 L2TP 経由で接続してやってもいいです。

  1. サーバー側の設定
    簡易セットアップで「拠点間 VPN サーバーまたはブリッジ」にチェック
    「多拠点からの接続を受け入れる VPN Server」を選択
    仮想 HUB を作成
    ローカルブリッジを仮想 HUB と「 en5 」との間で作成
    カスケード接続用のユーザーを作成
    

    確かこんな感じでした。 VPN Azure や DDNS は、もうすでに EdgeRouter で DDNS が設定してあって、かつ 5555 番のポートフォワードも問題ないようであれば不要です。

  2. ブリッジ側の設定
    簡易セットアップで「拠点間 VPN サーバーまたはブリッジ」にチェック
    「各拠点に設定する VPN Bridge」を選択
    仮想 HUB を作成
    ローカルブリッジを、仮想 HUB と「 en5 」との間で作成
    サーバーへのカスケード接続を仮想 HUB 上に設定
    (サーバーで設定したユーザー名、サーバーの DDNS 等でのドメイン名、ポート 5555 番で設定)
    カスケード接続へセキュリティーポリシーを設定
    (DHCPパケットをフィルタリングにチェック)
    

こんな感じです。高度なレイヤー2 VPN があっけないほど簡単に接続されてしまうのでびっくりです。

仕上げ

さて、あと少し。このままでは実は Policy Based Routing / Domain Based Routing の項で設定した tun0 を利用したルーティングが、ソフトイーサが稼働してない時は動作しなくなってしまいます。理由を簡単に言えば、こんな感じかと思います。

  1. 拠点1の 192.168.1.0 内の端末 192.168.1.5 から Policy Based Routing 対象のサイトにアクセス
  2. 行きのパケットは、拠点1のルーターが tun0 を通るようルーティングする
  3. そして tun0 のトンネルを抜け、拠点2のルーターから目的のサイトに到達
  4. 帰りのパケットは拠点2のルーターに届く
  5. 帰りのパケットの目的地は 192.168.1.5 だが、それは拠点2と同一サブネット扱いなので、拠点2のルーターは tun0 に戻さず、どこか LAN 内にいるだろうとパケット送り出すも、 SoftEther が動いてないので 192.168.1.5 にはたどり着かず・・

さて、これをどうやって帰りも必ず tun0 を通るようにするかというと、行きのトンネルを通るときに IP マスカレードして、トンネルの IP アドレスから送信したように見せればいいわけです。つまり、

  1. 拠点1の 192.168.1.0 内の端末 192.168.1.5 から Policy Based Routing 対象のサイトにアクセス
  2. 行きのパケットは、拠点1のルーターが tun0 を通るようルーティングする
  3. かつ拠点1のルーターは IP マスカレードによって、パケットの送信元を tun0 の IP アドレスに変換
  4. そして tun0 のトンネルを抜け、拠点2のルーターから目的のサイトに到達する
  5. 帰りのパケットは拠点2のルーターに届く
  6. 帰りのパケットの目的地は tun0 なので、拠点2のルーターは tun0 にパケットを戻す
  7. 拠点1のルーターはマスカレードの記録を元に、パケットを 192.168.1.5 に戻す

となるわけです。これでソフトイーサが動作していなくても、トンネルを使ったルーティングが常に動作するようになります。

それでは自宅側のルーターで tun0 に対してマスカレードを設定します。

自宅ルーターのみ設定
Description: masquerade for tun0
Outbound Interface: tun0
Translation: Use Masquerade
Protocol: All protocols

これを応用すれば、ソフトイーサ無しでも両拠点のルーターにアクセスできるようになります。このマスカレードを両拠点で tun0 に対して設定し、その tun0 の両端の IP アドレス (192.168.122.1 および 192.168.122.2) を使うだけです。

さらに、 SoftEther によって Bonjour は何もしなくても両拠点で一体的に動作するので、 mDNS Reflector は両ルーターで disable にしてしまってよいでしょう。

おわりに

というわけで、 SoftEther VPN Server の Mac での常駐化と拠点間 L2 VPN 接続でした。いかがでしたでしょうか。

すべて EdgeRouter で完結しないのは残念ですが、ソフトイーサのおかげで EdgeRouter 自身はブリッジ接続から解放され、結果としてルーターとして高速なスループットを保ちながら L2 VPN による2拠点の一体化ができようになりました。

ちなみにこの環境を実現するのに、下記のものは特に必要ありませんでした。特に何もせず UDP 高速化も動作しています。

  • UDP 高速化を動かすための エフェメラルポート等の設定
  • TUN / TAP
  • Secure NAT
  • SoftEther の DDNS (EdgeRouter のを使用)
  • VPN Azure (EdgeRouter でポートフォワード)

お疲れ様でした。今回 static routing は削除しましたが、以前設定した IPsec/GRE 自体のトンネルは生きてるので、 domain based routing は変わらず動作しています。ただ2拠点間の通信が、レイヤー3レベルの static routing でなくてレイヤー2レベルのソフトイーサブリッジ経由になっている、ということになります。

The post EdgeRouter X – 番外編1. Mac と SoftEther で拠点間 L2 VPN を構築する appeared first on yabe.jp.

]]>
https://yabe.jp/gadgets/edgerouter-x-s1-l2-vpn-with-softether/feed/ 1 8475
EdgeRouter X – 11. 自宅と実家の2つの LAN の Bonjour を一体化する ( Wide Area Bonjour / Avahi ) https://yabe.jp/gadgets/edgerouter-x-11-wide-area-bonjour/ https://yabe.jp/gadgets/edgerouter-x-11-wide-area-bonjour/#comments Sun, 09 Oct 2016 08:51:52 +0000 http://yabe.jp/?p=8261 さて、なかなか高性能なルーターを買って、色々設定ができたからちょっと書き留めてみるかな、ぐらいなノリで始めたらものすごく膨大になってしまったこのシリーズも、今回が最後です。正直ホッとしてますが、張り切っていきましょう。今回は拠点間 VPN と、 EdgeRouter 内蔵の Bonjour / mDNS ソフトウェア Avahi を使って、自宅と実家の LAN の Bonjour を一体化してみます。これにより実家の Mac や Time Capsule に簡単にアクセスできるようになり、設定や画面共有が楽になります。 対象ファームウェアは 1.9.1 です。 Bonjour とは Bonjour とは、 Zeroconf をベースにした LAN 内の端末を何の設定もせず相互に発見できるようにする仕組みです。 LAN 内の Apple TV や iTunes が他の端末から見えたり、 AirPlay スピーカーから音が出たりするのは、この技術のおかげです。ただ基本的には同じ LAN 内のみに限られます。今回はそれを VPN 経由で転送し、あたかも2つの LAN が Bonjour 上では1つになったようにしてみます。 Avahi とは Avahi とは、オープンソースの Bonjour / mDNS ソフトウェアです。 Linux の世界で Bonjour に対応させたいときに使います。 EdgeRouter にも内蔵されており、 mDNS reflector という機能を有効にすると起動します。基本的には同じルーターにつながる VLAN 等に Bonjour を転送し、 VLAN 同士で Apple TV を使ったりするようにする機能ですが、少し設定を変えると拠点間 VPN でも動くことがわかったのでやってみました。ちなみに単に VLAN 同士で Bonjour を転送する場合、ファームウェア 1.8.0 から mdns repeater というさらに簡単な機能も追加されています。 Wide Area Bonjour では設定してみましょう。まず両拠点の ER-X で Avahi のコンフィグファイル /etc/avahi/avahi-daemon.conf を変更し、 VPN 等の Point-to-point インタフェースを受け付けるようにします。また Wide Area bonjour を有効にします。 /etc/avahi/avahi-daemon.conf を編集 allow-interfaces=switch0, tun0 を追加 allow-point-to-point=yes を追加 […]

The post EdgeRouter X – 11. 自宅と実家の2つの LAN の Bonjour を一体化する ( Wide Area Bonjour / Avahi ) appeared first on yabe.jp.

]]>
さて、なかなか高性能なルーターを買って、色々設定ができたからちょっと書き留めてみるかな、ぐらいなノリで始めたらものすごく膨大になってしまったこのシリーズも、今回が最後です。正直ホッとしてますが、張り切っていきましょう。今回は拠点間 VPN と、 EdgeRouter 内蔵の Bonjour / mDNS ソフトウェア Avahi を使って、自宅と実家の LAN の Bonjour を一体化してみます。これにより実家の Mac や Time Capsule に簡単にアクセスできるようになり、設定や画面共有が楽になります。 対象ファームウェアは 1.9.1 です。

Bonjour とは

Bonjour とは、 Zeroconf をベースにした LAN 内の端末を何の設定もせず相互に発見できるようにする仕組みです。 LAN 内の Apple TV や iTunes が他の端末から見えたり、 AirPlay スピーカーから音が出たりするのは、この技術のおかげです。ただ基本的には同じ LAN 内のみに限られます。今回はそれを VPN 経由で転送し、あたかも2つの LAN が Bonjour 上では1つになったようにしてみます。

Avahi とは

Avahi とは、オープンソースの Bonjour / mDNS ソフトウェアです。 Linux の世界で Bonjour に対応させたいときに使います。 EdgeRouter にも内蔵されており、 mDNS reflector という機能を有効にすると起動します。基本的には同じルーターにつながる VLAN 等に Bonjour を転送し、 VLAN 同士で Apple TV を使ったりするようにする機能ですが、少し設定を変えると拠点間 VPN でも動くことがわかったのでやってみました。ちなみに単に VLAN 同士で Bonjour を転送する場合、ファームウェア 1.8.0 から mdns repeater というさらに簡単な機能も追加されています。

Wide Area Bonjour

では設定してみましょう。まず両拠点の ER-X で Avahi のコンフィグファイル /etc/avahi/avahi-daemon.conf を変更し、 VPN 等の Point-to-point インタフェースを受け付けるようにします。また Wide Area bonjour を有効にします。

/etc/avahi/avahi-daemon.conf を編集
allow-interfaces=switch0, tun0 を追加
allow-point-to-point=yes を追加
enable-wide-area=yes を追加

設定ファイルにこれらの項目がすでにある場合は追加不要です。大抵は # が付いてコメントアウトされていると思うので、その # を取って、必要なポート等をここにあるように変更してください。

その後は Avahi を起動するために両拠点で mDNS reflector を有効にします。

コンフィグツリーの service > mdns > reflector を有効にする
preview ボタンを押す
apply ボタンを押す

もちろん CLI で

set service mdns reflector

と入力してもオーケーです。

さて、設定がうまくいくと、相互の LAN の Bonjour 対応機器が Mac や iPhone の画面に現れます。 Airmac ユーティリティで両方の LAN 内の Time Capsule が表示されたり、 Finder のサイドバーに両方の LAN の Mac が表示されたりします。

screen-shot-2016-10-09-at-1-40-17-am

screen-shot-2016-10-09-at-1-07-53-am

実は画面共有は iCloud アカウントがあれば簡単にできるようになってしまったので、あまりこの方法のメリットはないかもしれません。が、2つの LAN が1つになっているのを見るのはいいものです。

今回下記のスレッドを参考にしました。

mDNS/bonjour forwarding

mdns question

EdgeRouter X – AirPlay Issues

Bonjour/mDNS over IPSEC VPN – Avahi

さて大量の記事にうんざりしておられるかと思いますが、それでもこの $50 のルーターがものすごく多機能かつ高性能だということが伝わったのではないかと思います。家のルーターをほんの少しよくしようという方から、バリバリ VPN を使ってみたいという方まで、本当にオススメです。

以上、本当に本当にお疲れ様でした。

The post EdgeRouter X – 11. 自宅と実家の2つの LAN の Bonjour を一体化する ( Wide Area Bonjour / Avahi ) appeared first on yabe.jp.

]]>
https://yabe.jp/gadgets/edgerouter-x-11-wide-area-bonjour/feed/ 1 8261
EdgeRouter X – 10. 海外から見られないサイトを見る2 ( Domain Based Routing / Dnsmasq ) https://yabe.jp/gadgets/edgerouter-x-10-domain-based-routing/ https://yabe.jp/gadgets/edgerouter-x-10-domain-based-routing/#comments Sun, 09 Oct 2016 07:56:05 +0000 http://yabe.jp/?p=8257 さて今回は、対象のサイトを VPN トンネル経由でルーティングする際に、 IP アドレスでなくドメイン名を使う手法で設定してみます。 EdgeRouter 内蔵の軽量 DNS サーバー Dnsmasq を使います。

The post EdgeRouter X – 10. 海外から見られないサイトを見る2 ( Domain Based Routing / Dnsmasq ) appeared first on yabe.jp.

]]>
さて今回は、対象のサイトを VPN トンネル経由でルーティングする際に、 IP アドレスでなくドメイン名を使う手法で設定してみます。 EdgeRouter 内蔵の軽量 DNS サーバー Dnsmasq を使います。 対象ファームウェアは 1.9.1 です。

なぜドメイン名でルーティングするのか

前回の Policy Based Routing で説明したやり方は、対象となる VPN 経由で見たいサイトの IP アドレスが必要になります。これは、小規模なサイトであれば問題ありませんが、 Netflix や Hulu 等、サーバーがいくつもあり、かつそのサーバーの IP アドレスが時間によって変わる場合は、すべての IP アドレスを調べつくす必要があり非現実的な設定方法となってしまいます。

その際に便利なのが、ドメイン名を指定してルーテイングを行うこの機能です。

この機能を使うと、対象のサイトのドメイン名を指定するだけで、自動的にそのサイト向けのトラフィックが拠点間 VPN を通るようになり、 L2TP VPN をオンにしたりオフにしたりとか面倒な作業をすることなく、あたかもその地域にいるかのように LAN 内のすべての端末から地域制限のかかったサイトが見られるようになります。消費者が買えるルーターでこの機能を備えてるのは世界でも EdgeRouter だけのようです。 $49 でそんなルーターが買えてしまうなんて、ほんと末恐ろしい世の中になったものです。

Dnsmasq とは

Dnsmasq とは主に小規模ネットワーク向けの DNS サーバー兼 DHCP サーバーソフトウェアです。 BIND 等に比べてものすごく軽量で、ものすごく設定が簡単です。

今回はこのような作業になります。

  1. Firewall で 空のアドレスグループを作る
  2. Dnsmasq に対象ドメイン名の IP アドレスをアドレスグループに記録させる
  3. Firewall で前回と同じく modify ルールを設定
  4. さらに Dnsmasq で、対象ドメイン名にアクセスする際は日本の DNS を使うよう設定する

これで、ドメイン名によるルーティング制御が可能になります。これは Domain Based Routing と呼んでしまって差し支えないでしょう。対象のサイトの IP アドレスが変わっても Dnsmasq がどんどんアドレスグループに記録していくので安心です。

それでは今回は TVer.jp を例に設定してみます。 TVer.jp はテレビ局各局のオンデマンド配信サービスを合わせたサイトなので、 VPN トンネル経由でルーティングしなければならないサイトが各局別にたくさんあり、かつ一定時間で IP アドレスが変わるものが結構あります。前回の IP アドレスベースのルーティングではそれら全てを押さえるのはとても大変ですが、ドメイン名ベースのルーティングならなんとかなりそうです。なんども言うようですが、これらは ER-X の潜在能力の高さを示す設定例です。地域制限のかかったサイトはその地域でみるようにしましょう。

Firewall で 空のアドレスグループを作る

Dnsmasq が IP アドレスを記録するための空のアドレスグループをつくります。名前は tver-ipset にしました。

set firewall group address-group tver-ipset
set firewall group address-group tver-ipset description tver.jp

Dnsmasq に IP アドレスをアドレスグループに記録させる

続いて Dnsmasq が対象のサイトの IP アドレスを tver-ipset アドレスグループに記録するようオプションを設定します。オプションの書式は ipset=/ドメイン名/アドレスグループ です。ちなみにドメイン名を “xxxx.com” と記述した場合は、”*.xxxx.com” が全て含まれることになります。今回は TVer.jp 内のビデオをストリーミングしてそうなドメイン名を列挙しました。ついでに Dnsmasq のキャッシュサイズを増やします。

## キャッシュサイズを増やす
set service dns forwarding cache-size 5000

## Dnsamasq が自分自身を DNS サーバーとして参照できるようにする (もう設定してあれば不要)
set service dns forwarding listen-on lo

## IP アドレスを記録するドメイン名を設定
set service dns forwarding options ipset=/tver.jp/ntv.co.jp/tv-asahi.co.jp/tbs.co.jp/fujitv.co.jp/presentcast.co.jp/brightcove.com/brightcove.net/streamhub.tv/stream.ne.jp/tver-api-data.s3.amazonaws.com/tver-ipset

Firewall で前回と同じく modify ルールを設定

それでは前回作った Modify の route_tun0 にルールをを追加します。

set firewall modify route_tun0 rule 20
set firewall modify route_tun0 rule 20 action modiofy
set firewall modify route_tun0 rule 20 description TVer.jp
set firewall modify route_tun0 rule 20 destination group address-group tver-ipset
set firewall modify route_tun0 rule 20 modify
set firewall modify route_tun0 rule 20 modify table 1

Dnsmasq に特定の DNS を使うよう設定する

対象サイトにアクセスする際に、念のため Dnsmasq に日本の DNS を使うように指示します。オプションの書式は server=/ドメイン名/DNSサーバーの IP アドレス です。ここでは実家のインターネットプロバイダーの DNS が 208.67.222.123 だったとしますが、お使いのプロバイダーに合わせて変更してください。

## 同じドメイン名のサイトで日本の DNS を使うよう設定
set service dns forwarding options server=/tver.jp/ntv.co.jp/tv-asahi.co.jp/tbs.co.jp/fujitv.co.jp/presentcast.co.jp/brightcove.com/brightcove.net/streamhub.tv/stream.ne.jp/tver-api-data.s3.amazonaws.com/208.67.222.123

これで終了です。サイトにアクセスしてみる前に、 Dnsmasq がきちんと IP アドレスを記録するため、ネットワークユーティリティ等の Lookup を使って、予めアクセスしそうなドメインを lookup しておくとスムーズにアクセスできます。でなければサイトが正常に表示されるまで数回リロードが必要だったりします。きちんと設定できているのにうまく表示されない場合は、一度 cookie を全部消去して見るといいでしょう。

今回参考にしたのは下記のスレッドです。

Dnsmasq Ipset

以上、お疲れ様でした。

The post EdgeRouter X – 10. 海外から見られないサイトを見る2 ( Domain Based Routing / Dnsmasq ) appeared first on yabe.jp.

]]>
https://yabe.jp/gadgets/edgerouter-x-10-domain-based-routing/feed/ 1 8257
EdgeRouter X – 9. 海外から見られないサイトを見る1 ( Policy Based Routing ) https://yabe.jp/gadgets/edgerouter-x-09-policy-based-routing/ https://yabe.jp/gadgets/edgerouter-x-09-policy-based-routing/#comments Sun, 09 Oct 2016 05:25:50 +0000 http://yabe.jp/?p=8083 さてこの項では、せっかく設定した拠点間 VPN を活用して、海外から見られないサイト等を自動的に VPN トンネル経由でアクセスするよう Policy Based Routing の設定します。

The post EdgeRouter X – 9. 海外から見られないサイトを見る1 ( Policy Based Routing ) appeared first on yabe.jp.

]]>
さてこの項では、せっかく設定した拠点間 VPN を活用して、海外から見られないサイト等を自動的に VPN トンネル経由でアクセスするよう Policy Based Routing の設定します。 対象ファームウェアは 1.9.1 です。

Policy Based Routing とは

目的のサイトや LAN 内の端末の IP アドレス、ポート番号等に応じて、インターネットにアクセスする際の経路を制御するやり方です。今回は、海外から見られないサイトを、前回設定した拠点間 VPN 経由でルーティングするよう設定してみます。これにより、設定したサイトに自宅からアクセスすると、自動的に VPN トンネル通って実家経由でアクセスするようになり、海外からでも見られるようになります。

海外から見られないサイトを見る際は、 L2TP などのリモートアクセス VPN でその地域のサーバーに一旦接続しておいて見るのが主流ですが、 L2TP はすべてのインターネットアクセスを VPN 経由にしてしまうので、接続中は関係ないサイトを見る際にもスピードが遅くなってしまいます。また、使う時には毎回接続・切断をしなければならないこと、 L2TP を使う端末全てであらかじめ L2TP の設定をしておかないと使えないのが面倒です。

一方、 Policy Based Routing をルーターで設定してしまえば、こんなメリットがあります。

L2TP の接続切断が不要
一度設定してしまえば、ルーターが自動的にそのサイトを VPN トンネル経由でルーティングするので、リモートアクセス VPN の接続・切断が不要です
LAN 内の端末に設定不要
ルーターが自動的にルーティングするので、 LAN 内の端末に L2TP の設定等をする必要がありません
Apple TV や PS4 でも使える
L2TP の設定ができない Apple TV や PS4 などの端末でもサイトに VPN 経由でアクセスできるようになります
スピードが落ちない
全ての通信が VPN 経由になってしまい、他のサイトを見るときもスピードが速なってしまう L2TP に対し、他のサイトにアクセスする際は VPN 経由でないのでスピードの低下がありません

ちなみにこれらすべてはあくまで ER-X の潜在能力の高さを示す設定例であって、実際の使用を推奨しているわけではありません。地域制限のかかっているサイトは、その地域内で見ましょう。

今回はこのような作業になります。

  1. 対象となるサイトの IP アドレスを調べる
  2. その IP アドレスで Policy Based Routing を設定する

今回は私の大好きな radiko.jp を例として設定してみようと思います。繰り返しますがこれは設定例であって、実際の使用を推奨しているわけではありません。

radiko


対象となるサイトの IP アドレスを調べる

まずは Mac の「ネットワークユーテリティ」を使って、対象となるサイトの IP アドレスを調べます。

Mac 画面右上の虫眼鏡マークから「ネットワークユーテリティ」を検索
Lookup タブをクリック
"radiko.jp" を入力
Lookup ボタンをクリック

screen-shot-2016-10-08-at-9-03-48-pm

これで radiko.jp の IP アドレスが 203.211.199.120 だとわかりました。


Policy Based Routing を設定する

続いて、この IP アドレスで Policy Based Routing を設定してみます。使うのは Firewall の modify コマンドです。

## 設定モードに入る
configure

## Firewall のアドレスグループ "radiko" を作成
set firewall group address-group radiko
set firewall group address-group radiko address 203.211.199.120
set firewall group address-group radiko description radiko.jp

## 実家経由 ( tun0 もしくは vtun0 ) でルーティングするルーティングテーブルを作成
set protocols static table 1
set protocols static table 1 interface-route 0.0.0.0/0
set protocols static table 1 interface-route 0.0.0.0/0 next-hop-interface tun0

## Firewall のルールセット "route_tun0" を作成
set firewall modify route_tun0

## "radiko" のアドレスグループが目的地の時ルーティングテーブル 1 を使うルールを設定
set firewall modify route_tun0 rule 10
set firewall modify route_tun0 rule 10 action modiofy
set firewall modify route_tun0 rule 10 description radiko.jp
set firewall modify route_tun0 rule 10 destination group address-group radiko
set firewall modify route_tun0 rule 10 modify
set firewall modify route_tun0 rule 10 modify table 1

## LAN 側インターフェース switch0 の FireWall の入力側に modify ルールの route-tun0 を設定
set interfaces switch switch0 firewall in modify route_tun0

## 設定を有効化、保存
commit
save

これで Policy Based Routing の設定完了です。設定が完了した瞬間から radiko.jp には tun0 経由でアクセスするようになり、結果的にサイトに日本経由でアクセスしていることになるので、内容が見られるようになります。もちろん LAN 内の端末なら iPhone からでも Mac からでも見られるようになります。

また対象となるサイトに関係なく、 Apple TV や PS4 等 L2TP の設定ができない端末をいつも強制的に tun0 経由でアクセスさせるようにするには、下記のようなルールを追加します。
ここでは例として PS4 に割り当てた固定アドレスを 192.168.1.51 とします。

configure
set firewall group address-group PS4
set firewall group address-group PS4 address 192.168.1.51
set firewall group address-group PS4 description PS4
set firewall modify route_tun0 rule 20
set firewall modify route_tun0 rule 20 action modiofy
set firewall modify route_tun0 rule 20 description PS4
set firewall modify route_tun0 rule 20 source group address-group PS4
set firewall modify route_tun0 rule 20 modify
set firewall modify route_tun0 rule 20 modify table 1
commit
save

つまり、アクセス元の IP アドレスによって tun0 にルーテイングされるよう Firewall の modify の条件を設定する、というわけです。

しかしこの方法は万能ではなく、例えば radiko.jp の IP アドレスが変わってしまうとまた見られなくなっていまいます。もちろん変わるたびにその IP アドレスを先ほどのアドレスグループに追加すればいいのですが、あまりにその頻度が多かったり、変わる IP アドレスが大量だったりすると少々大変です。

そういう場合、 L2TP を使うのも一つの解決策で、この場合すべての通信が L2TP サーバーの置いてある国経由になるので、日本のサーバー経由でアクセスすれば IP アドレスが変わろうがなんだろうが常にきちんとアクセスできます。ただし関係のない他のサイトもすべて速度の遅い L2TP VPN 経由になってしまうのがネックですが。というわけで IP アドレスを調べたり云々がめんどい、という人は素直に L2TP を使った方が楽かもしれません。

しかし実は EdgeRouter には、このような場合に便利な、 Dnsmasq を用いた IP アドレスでなくドメイン名ベースでルーティングする機能があります。これはヤマハやシスコのルーターにもない素晴らしい機能です。次回はその Domain Based Routing を設定してみます。

以上、お疲れ様でした。

The post EdgeRouter X – 9. 海外から見られないサイトを見る1 ( Policy Based Routing ) appeared first on yabe.jp.

]]>
https://yabe.jp/gadgets/edgerouter-x-09-policy-based-routing/feed/ 2 8083