Help us understand the problem. What is going on with this article?

EdgeRouter X をなるべくCLIで設定する

More than 1 year has passed since last update.

背景

EdgeRouterXをみんなで共同購入した。
設定のノウハウはみなさん挙げてくださっているが、WebUIを使った方法が多いかな、という印象を感じた。
せっかくVyatta系のOSを積んでいるのでCLIで頑張っていこうと思い、メモをしていく。
この記事では、PPPoEによるフレッツ光への接続、LAN側の設定を行う。
IPv6、サーバへの転送等の設定は後日行う。

サーバへの転送についても書きました。
EdgeRouter Xで外部側のポートをLAN内サーバのポートへ転送する設定

使ったもの

  • EdgeRouterX本体
  • ACアダプタ(付属)
  • コンセント変換端子(EuroDKで買ったら付いてきた)
  • LANケーブル
  • LAN-USBアダプタ(MacbookにEthernetないので)

本投稿で行う構成

  • EdgeRouterX
    • eth0:フレッツ光のモデムへ
    • eth1:スイッチへ
  • スイッチ
    • ポート1:サーバへ
    • ポート2:Macbookへ

WebUIでライセンス同意(これいらないかも)

  1. EdgeRouterのeth0とMacbookをLANケーブルで一時的に接続する
  2. Macの設定を以下の通りにする
  3. ブラウザで https://192.168.1.1 にアクセスし、ログインする。
    SSL証明書の警告がでるが無視する。
    1度ログインすればブラウザを閉じてもよい。

Macのネットワーク設定

構成: 手入力
IP アドレス: 192.168.1.2
サブネットマスク: 255.255.255.0
ルーター: 192.168.1.1

初期アカウントパスワード

username: ubnt
password: ubnt

SSHでログイン

Macbookからsshでログイン

$ ssh ubnt@192.168.1.1

パスワードは先程と同じ

本体の設定

ユーザ作成、パスワードの変更

$ configure
# set system login user [ユーザ名]
# set system login user [ユーザ名] authentication plaintext-password [パスワード]
# set system login user [ユーザ名] level admin
# commit
# save
Saving configuration to '/config/config.boot'...
Done
# exit

ここで1度ログアウトして新規作成したユーザでログインする。
デフォルトユーザubntを消す。

$ configure
# delete system login user ubnt
# commit
# save
Saving configuration to '/config/config.boot'...
Done

ホスト名の設定

# set system host-name router

タイムゾーンの設定

# set system time-zone Asia/Tokyo

NTPの設定

NICTのNTPサーバを追加して他を消す。

# set system ntp server ntp.nict.jp         
# delete system ntp server 0.ubnt.pool.ntp.org
# delete system ntp server 1.ubnt.pool.ntp.org
# delete system ntp server 2.ubnt.pool.ntp.org
# delete system ntp server 3.ubnt.pool.ntp.org

LAN構築

eth1ポートの設定

# set interfaces ethernet eth1 address '192.168.0.1/24'
# set interfaces ethernet eth1 description 'INSIDE'

DHCPの設定

192.168.0.19から192.168.0.254をDHCPに設定する。

# set service dhcp-server disabled 'false'
# set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24
# set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 default-router '192.168.0.1'
# set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 dns-server '192.168.0.1'
# set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 domain-name 'internal-network'
# set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 lease '86400'
# set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 start 192.168.0.19 stop 192.168.0.254
# exit

DNSの設定

# set service dns forwarding cache-size 0
# set service dns forwarding listen-on eth1
# set service dns forwarding name-server 8.8.8.8
# set service dns forwarding name-server 8.8.4.4
# commit
[ service dhcp-server ]
Starting DHCP server daemon...
# save

Ethernetケーブルを差し替える

一旦ログアウトする。
eth0に刺さってるケーブルをeth1ポートに刺す。
ログインをしてみて入れればOK。

ssh [ユーザ名]@192.168.0.1

WAN設定

Firewallの設定

WANに接続する前にFirewallの設定をする。
Wikiを見ながらとりあえずで。あんまり深く理解してない。

$ configure

# set firewall name WAN_IN default-action drop
# set firewall name WAN_IN description 'WAN to internal'
# set firewall name WAN_IN rule 10 action accept
# set firewall name WAN_IN rule 10 description 'Allow established/related'
# set firewall name WAN_IN rule 10 state established enable
# set firewall name WAN_IN rule 10 state related enable
# set firewall name WAN_IN rule 20 action drop
# set firewall name WAN_IN rule 20 description 'Drop invalid state'
# set firewall name WAN_IN rule 20 state invalid enable

# set firewall name WAN_LOCAL default-action drop
# set firewall name WAN_LOCAL description 'WAN to router'
# set firewall name WAN_LOCAL rule 10 action accept
# set firewall name WAN_LOCAL rule 10 description 'Allow established/related'
# set firewall name WAN_LOCAL rule 10 state established enable
# set firewall name WAN_LOCAL rule 10 state related enable
# set firewall name WAN_LOCAL rule 20 action drop
# set firewall name WAN_LOCAL rule 20 description 'Drop invalid state'
# set firewall name WAN_LOCAL rule 20 state invalid enable

PPPoEの設定

# set interfaces ethernet eth0 pppoe 0 user-id [プロバイダの接続ID]
# set interfaces ethernet eth0 pppoe 0 password [プロバイダの接続パスワード]
# set interfaces ethernet eth0 pppoe 0 default-route auto
# set interfaces ethernet eth0 pppoe 0 name-server auto
# set interfaces ethernet eth0 pppoe 0 firewall in name WAN_IN
# set interfaces ethernet eth0 pppoe 0 firewall local name WAN_LOCAL
# set interfaces ethernet eth0 pppoe 0 description 'WAN'

NATの設定

# set nat source rule 10 translation address masquerade
# set nat source rule 10 source address 192.168.0.0/24
# set nat source rule 10 outbound-interface pppoe0

フレッツ光向け設定(MTU、MSS)

上記のままの設定だとspeedtest.netなどのサイトに接続できなかった。
フレッツ光でPPPoE通信を行うには別途以下の設定が必要となるらしい。
この場合、PPPoEに必要なヘッダ分8byteを引いたサイズが1度に遅れるデータ量となるため、MTUを1454以下に設定した。
また、MSS-clampは、1度に送るデータ量の上限を接続相手に予め伝えることができる。
この数値は一般にMTUから40引いた値が良いとされているため、1414に設定した。
(ここまで全部「らしい」なので、あとでもう1度勉強してみる必要ある)

# set interfaces ethernet eth0 pppoe 0 mtu 1454

# set firewall modify pppoe-out rule 1 action modify
# set firewall modify pppoe-out rule 1 modify tcp-mss 1414
# set firewall modify pppoe-out rule 1 protocol tcp
# set firewall modify pppoe-out rule 1 tcp flags 'SYN'
# set interfaces ethernet eth0 pppoe 0 firewall out modify pppoe-out

まとめ

上記の設定を行うことでとりあえずの通信を行うことができた。

サーバへの転送やIPv6対応等が残っているが、それはまた後日やっていきたい。

また、作業を行ったあとに書いているので、実際の設定項目と比較して漏れがあったらごめんなさい。

付録の設定は実際の設定を吸い出したものなので、おかしいなと思ったらそちらを見て欲しい。

参考文献

付録・設定

本投稿内で行った結果の設定ファイルを掲載しておく。

firewall {
    all-ping enable
    broadcast-ping disable
    ipv6-receive-redirects disable
    ipv6-src-route disable
    ip-src-route disable
    log-martians enable
    modify pppoe-out {
        rule 1 {
            action modify
            modify {
                tcp-mss 1414
            }
            protocol tcp
            tcp {
                flags SYN
            }
        }
    }
    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 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 20 {
            action drop
            description "Drop invalid state"
            state {
                invalid enable
            }
        }
    }
    receive-redirects disable
    send-redirects enable
    source-validation disable
    syn-cookies enable
}
interfaces {
    ethernet eth0 {
        address 192.168.1.1/24
        duplex auto
        pppoe 0 {
            default-route auto
            description WAN
            firewall {
                in {
                    name WAN_IN
                }
                local {
                    name WAN_LOCAL
                }
                out {
                    modify pppoe-out
                }
            }
            mtu 1454
            name-server auto
            password [パスワード]
            user-id [ID]
        }
        speed auto
    }
    ethernet eth1 {
        address 192.168.0.1/24
        description INSIDE
        duplex auto
        speed auto
    }
    ethernet eth2 {
        duplex auto
        speed auto
    }
    ethernet eth3 {
        duplex auto
        speed auto
    }
    ethernet eth4 {
        duplex auto
        speed auto
    }
    loopback lo {
    }
    switch switch0 {
        mtu 1500
    }
}
service {
    dhcp-server {
        disabled false
        hostfile-update disable
        shared-network-name LAN {
            authoritative disable
            subnet 192.168.0.0/24 {
                default-router 192.168.0.1
                dns-server 192.168.0.1
                domain-name internal-network
                lease 86400
                start 192.168.0.19 {
                    stop 192.168.0.254
                }
            }
        }
    }
    dns {
        forwarding {
            cache-size 0
            listen-on eth1
            name-server 8.8.8.8
            name-server 8.8.4.4
        }
    }
    gui {
        https-port 443
    }
    nat {
        rule 5010 {
            outbound-interface pppoe0
            source {
                address 192.168.0.0/24
            }
            type masquerade
        }
    }
    ssh {
        port 22
        protocol-version v2
    }
}
system {
    host-name router
    login {
        user [ユーザ名] {
            authentication {
                encrypted-password ****************
                plaintext-password ****************
            }
            level admin
        }
    }
    ntp {
        server ntp.nict.jp {
        }
    }
    syslog {
        global {
            facility all {
                level notice
            }
            facility protocols {
                level debug
            }
        }
    }
    time-zone Asia/Tokyo
}
maiani
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした