自宅ルータをVyattaにして快適になった
September 10, 2013
市販のルータ兼無線アクセスポイント君が
2日に1回再起動しないとAirPlayできなくなってしまったので
この際自宅のネットワーク環境を一新すべく
Vyattaを導入した。その際のメモ。
参考URL
環境
- Ubuntu: 12.04.3 LTS (KVM HOST)
- Vyatta: VC6.6R1
ネットワーク
買ったもの
追加NIC用に「Intel Gigabit CT Desktop Adapter EXPI9301CT」
スイッチは前職で頂いた8ポートのスイッチングハブを利用
構築
ブリッジのインタフェースを2つつくる
- eth0 Internal
- eth1 External
/etc/network/interfaces
auto lo
iface lo inet loopback
iface eth0 inet manual
iface eth1 inet manual
auto br0
iface br0 inet static
address 192.168.0.3
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.1
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
dns-nameservers 192.168.0.1
auto br1
iface br1 inet static
address 0.0.0.0
bridge_ports eth1
bridge_stp off
bridge_fd 0
bridge_maxwait 0
気が付いたらvnetがアサインされていた。 ここらへんまだ理解していない。
brctl show
bridge name bridge id STP enabled interfaces
br0 8000.20cf30ea8178 no eth0
br0 8000.XXXXXXXXXXXX no eth0
vnet0
vnet1
vnet2
br1 8000.XXXXXXXXXXXX no eth1
vnet3
lxcbr0 8000.000000000000 no
VyattaのISOファイルを落としてくる
$ curl -O http://www.vyatta.com/downloads/vc6.6/vyatta-livecd_VC6.6R1_amd64.iso
Vyatta用のディスクイメージを作成する
$ qemu-img create -f raw /var/lib/libvirt/images/vyatta01-2G.img 2G
KVMでインストールする
$ virt-install --connect qemu:///system \
--name vyatta01 \
--ram 512 \
--vcpus=1 \
--disk path=/var/lib/libvirt/images/vyatta01-2G.img \
--nographics \
--network=bridge:br0 --network=bridge:br1 \
--cdrom=/tmp/vyatta-livecd_VC6.6R1_amd64.iso
Install Default setting
- login: vyatta
- Password: vyatta
$ virsh console Vyatta01
boot:
Welcome to Vyatta - vyatta ttyS0
vyatta login: vyatta
Password:
Linux vyatta 3.3.8-1-amd64-vyatta #1 SMP Wed Mar 13 10:35:28 PDT 2013 x86_64
Welcome to Vyatta.
This system is open-source software. The exact distribution terms for
each module comprising the full system are described in the individual
files in /usr/share/doc/*/copyright.
vyatta@vyatta:~$ install image
Welcome to the Vyatta install program. This script
will walk you through the process of installing the
Vyatta image to a local hard drive.
Would you like to continue? (Yes/No) [Yes]:
Probing drives: OK
Looking for pre-existing RAID groups...none found.
The Vyatta image will require a minimum 1000MB root.
Would you like me to try to partition a drive automatically
or would you rather partition it manually with parted? If
you have already setup your partitions, you may skip this step
Partition (Auto/Parted/Skip) [Auto]:
のようにインストールがはじまります。
基本的にチュートリアルに乗って行けば問題ないかと。
新しいパスワードを設定して、再起動
This will destroy all data on /dev/sda.
Continue? (Yes/No) [No]: yes
Enter password for administrator account
Enter vyatta password:
Retype vyatta password:
vyatta@vyatta:~$ reboot now
vyattaの設定
Vyattaは他のネットワーク機器と同じように
set
, show
, delete
で全て行うことができる。
- setで値を設定し
- showで確認
- 間違っていればdeleteで削除
- テストを行い、問題がなければcommit
- 永続的に設定を保持するためにsave
という一連のサイクルで設定を行う。
Vyattaの内部IPを設定
# set interfaces ethernet eth0 address 192.168.0.1/24
SSHの許可
# set service ssh listen-address 192.168.0.1
ISPと接続
# set interfaces ethernet eth0 pppoe 0 user-id XXXXX@YYY.ZZZ
# set interfaces ethernet eth0 pppoe 0 password XXXXX
# set interfaces ethernet eth0 pppoe 0 default-route auto
# commit
# save
この時点で外部との接続が可能
$ ping 8.8.8.8
などで pppoe0 => internet の疎通確認を行う
マスカレードの設定
# set nat source rule 1 source address 192.168.0.0/24
# set nat source rule 1 outbound-interface pppoe0
# set nat source rule 1 translation address masquerade
試しにクライアントPCを
- IP: 192.168.0.100
- NETWORK: 255.255.255.0/24
- GATEWAY: 192.168.0.1
と設定して、外部に疎通ができるか確認する。疎通ができればまずはOK。
SSHを許可する
ssh 192.168.0.1 -l vyatta
などとしてSSHで接続してみる
DHCPを振る
DHCPで192.168.0.200から192.168.0.250までの
IPアドレスを割り振るように設定。
# set service dhcp-server shared-network-name vyatta subnet 192.168.0.0/24 start 192.168.0.200 stop 192.168.0.250
# set service dhcp-server shared-network-name vyatta subnet 192.168.0.0/24 default-router 192.168.0.1
# set service dhcp-server shared-network-name vyatta subnet 192.168.0.0/24 dns-server NTT DNS SERVER
# set service dhcp-server shared-network-name vyatta subnet 192.168.0.0/24 dns-server NTT DNS SERVER
ここでハマったのが、PLANEXでもDHCPを振っていたせいで
DHCPでIPを付与されたクライアントPCのGATEWAYが
PLANEXを見に行ってしまっていていた。
PLANEXの方のDHCP機能を無効化することで解決。
しかし今度はPLANEXの方の管理画面に入れなくなってて放置してる。
Vyatta 6.6で画像が表示されない
Vyatta 6.6 画像が表示されない。 / 題名のないBlog(ry
画像が永遠に読み込めない不具合があるので下記設定を導入
set policy route PPPOE-IN rule 10 destination address 0.0.0.0/0
set policy route PPPOE-IN rule 10 protocol tcp
set policy route PPPOE-IN rule 10 tcp flags 'SYN,!ACK,!FIN,!RST'
set policy route PPPOE-IN rule 10 set tcp-mss 1360
set interfaces ethernet eth0 policy route PPPOE-IN
ポートフォワーディング
外部からアクセスできるようにフォワードする
set nat destination rule 1000 inbound-interface pppoe0
set nat destination rule 1000 destination port 22
set nat destination rule 1000 protocol tcp
set nat destination rule 1000 translation port 22
set nat destination rule 1000 translation address 192.168.0.11
set nat destination rule 1001 inbound-interface pppoe0
set nat destination rule 1001 destination port 60000-61000
set nat destination rule 1001 protocol tcp_udp
set nat destination rule 1001 translation port 60000-61000
set nat destination rule 1001 translation address 192.168.0.12
こんな感じでつらつらと設定していく
まとめ
ISPと接続してIPマスカレードができてDHCPが振れて
ポートフォワーディングができるVyatta最高です。
設定変更する度に回線切れて60秒待つとかいう苦行もなくなったし
AirPlay毎日できて最高です。
興味があれば、まずquick startのPDFだけでも見てみるといいかもです。
@mikedaさんも書かれていますが、上記設定をするだけなら簡単にできます。
よかったらお試しください。