Proxy ARPの設定

今使っているNAS(ReadyNAS 102)はカスタムカーネルを使っているためFirewallが使えません。カスタムFirmwareを検索してみたところ、だいぶ前に開発が止まっていました。カスタムカーネルを入れ替えればいいのですが、そもそもリスクが大きいことと正規ファームウエアによるチェックでダッシュボードにアクセスできないという問題があるらしいのです。そこでブリッジにFirewallいれて同等の機能をもたせようと思案しても2つ以上ポートのある機材は手元にありません。そこでProxy ARPなら手持ちに機材で対応できるので設定することにしました。ルータはBuffalo WZR-HP-AG300Hです。このルータはLAN用のアダプタとWAN用のアダプタの2つのイーサネットデバイスを持っています。ルータの中には1つのイーサアタプターをVLANでWANとLANを分けている機種もあります。ふだん中間ルータとして使う分にはWAN用のアダプタをブリッジしてLAN用ポート増やす使い方してますが、今回、このWANポートのProxy ARPのブリッジ化をしてみます。

[Layout]
                        OpenWrt Router:
 NAS:                  +----------------+----------------+      PC:
 192.168.1.100/24 ==== | 192.168.1.1/24 | 192.168.1.2/24 | ==== 192.168.1.11/24
                       | ZONE:lan2      | ZONE:lan1      |
                       | IF  :eth1      | IF  :br-lan    |
                       +----------------+----------------+
                        192.168.1.100 dev eth1 proto static scope link
                        net.ipv4.conf.eth1.proxy_arp=1
                        net.ipv4.conf.br-lan.proxy_arp=1

DebianのWIKIにすべて書いてあるのでそれを参考にセットアップします。

手動で行うには次のようにします。

echo 1 > /proc/sys/net/ipv4/conf/br-lan/proxy_arp
echo 1 > /proc/sys/net/ipv4/conf/eth1/proxy_arp
echo 1 > /proc/sys/net/ipv4/ip_forward
ip route add 192.168.1.100/32 dev eth1
ip addr add 192.168.1.2/32 dev eth1
ip addr add 192.168.1.1/32 dev br-lan

ip_forwardは大抵のルータで1(enable)になっているはずなので設定の必要はありませんが明示的に設定しておきます。

DebianのWIKIにもありますがひとつだけ問題があります。DHCP Relayする必要があります。OpenWrtにはいくつかパッケージがありますが、それは使わずデフォルトで入っているdnsmasqにDHCP Relay機能があるのでこれを使います。

/etc/dnsmasq.conf

dhcp-option=option:dns-server,192.168.1.254
dhcp-option=3,192.168.1.254
dhcp-relay=192.168.1.2,192.168.1.254,br-lan

Proxy ARPのブリッジの確認ができたらダッシュボードでOpenWrtの設定をします。

Network > Static Routes

/etc/sysctl.d/99-proxy-arp.conf

net.ipv4.conf.eth1.proxy_arp=1
net.ipv4.conf.br-lan.proxy_arp=1

リブートして設定を反映させます。

Firewallは悩みましたがとりあえずフォワードで行けそうです。もっといい方法がありそうですが今のところ思いつきません。

サービスポートを調べて追加

Debian WIKIをみるとmDNSもリレーが必要のようでファイラではNASが見えません。アドレスを打ち込めば使えますが少々不便です。解決方法は調査中です。また速度が2/3程度になります。経路が複雑になった上にiptablesでフィルタをかけているのでどうしても遅くなります。

以上です。