<<
2017.4
>>
[nao-pon/blog] |
||||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 15 | |
16 | 17 | 18 | 20 | 22 | ||
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 |
先日、プロバイダーのBiglobeはそのままに、コミュファからフレッツ光ネクスト【隼】にインターネット回線を切り替えたのですが、夜間の速度落ち込みが酷いため、V6プラスでの接続を追加しました。
ただ、Web サーバーやメールサーバーはポート開放をする必要があり、V6プラスでは利用できないため、ONU と HGW(NTT のホームゲートウェイ)の間にハブを追加して、そこから分岐して別途 PPPoEv4 用のルーターを繋げて、宅内ネットワークから見て、2系統のゲートウェイを用意して V6プラスと PPPoEv4 の接続をデフォルトゲートウェイを変更することで選択可能にしてあります。
しかし、Web サーバーでインターネットからデーターを取得する場合に、夜間の遅いときに動作に支障をきたすほどです。具体的には XOOPS Cube Legacy の X-update で legacy コアをダウンロードするのにタイムアウトととなってしまい正常に終了できません。
legacy コアは、10数Mバイトなのですが、これが5分のタイムアウトに引っかかるのですから、めっちゃ遅いことが分かると思います。
そこで、デフォルトルートを V6プラスのルーターにしておき、PPPoEv4 のルーターから入ってきた通信のみそのルーターに返すという仕組みにするばよいのではと考えていました。
ネットワークに疎いので、それをどのようにしたら良いのかが分からずに日にちが過ぎていたのですが、今日たまたまヒントとなるブログ記事に巡り合ったので、早速設定してみました。
そのブログ記事が
本当によく分からないので、とりあえず写経。
iptables で 特定のゲートウェイからの通信にマークをつけるとのこと。
「まっしろなめも帳」さんより引用
※ manglee tableをクリア # iptables -t mangle -F ※ 特定のMACアドレスから通信が入ってきた場合、1番のマークを付ける # iptables -t mangle -A INPUT -m mac --mac-source 【PPPoEv4 ルータの MAC アドレス】 -j MARK --set-mark 1 ※ 入ってきた通信の追跡ができるようmark情報を保存する # iptables -t mangle -A INPUT -j CONNMARK --save-mark ※ markがついていた通信の関連通信(今回はOUTPUT)のmarkを継続して付与する(save-markの情報をrestoreする) # iptables -t mangle -A OUTPUT -j CONNMARK --restore-mark
そして、引用元の記事では一時的なルーティングということらしいのですが、私は恒久的にしたいので /etc/sysconfig/network-scripts 以下に書き込みます。
# vim /etc/sysconfig/network-scripts/route-eth0
default via 【PPPoEv4 ルータの IP アドレス】 table 200
# vim /etc/sysconfig/network-scripts/rule-eth0
fwmark 1 table 200
そして、ネットワークサービスを再起動
# service network restart
念のため、グローバル IP アドレスの確認
$ curl inet-ip.info
V6プラス接続の IP アドレスになりました。
また、携帯の 4G 回線で確認し、外部からの Web サーバーに対するアクセスも問題ないことが確認できました。
問題がなければ iptables コマンドで変更した現在の設定を保存します。
# /sbin/service iptables save
「まっしろなめも帳」さんのお陰で助かりました!ありがとうございます。 :thumb_up:
尚、今回のネットワーク概略図はオンラインサービスの draw.io を利用して簡単に書いてみました。
追記: Raspberry Pi にも設定してみました - ネットワークで同一セグメント内の複数のゲートウェイに対応する (Raspberry Pi 編)
前回の「ネットワークで同一セグメント内の複数のゲートウェイに対応する」で設定したルーティングが調子がいいので、Raspberry Pi の Web サーバー(pi2.hypweb.net, phpng.pi2.hypweb.net) にも適用してみます。
Raspberry Pi の Webサーバーは、公開 Web サーバーに受けた pi2.hypweb.net, phpng.pi2.hypweb.net へのリクエストを Apache のリバースプロキシで転送しています。そのような環境でもうまくいくのかよく分かりませんが、とにかく設定してみます。
基本的には、前回と同様です。
# iptables -t mangle -F # iptables -t mangle -A INPUT -m mac --mac-source 【PPPoEv4 ルータの MAC アドレス】 -j MARK --set-mark 1 # iptables -t mangle -A INPUT -j CONNMARK --save-mark # iptables -t mangle -A OUTPUT -j CONNMARK --restore-mark
# ip route add default via 192.168.1.1 # ip route del default via 192.168.1.50
# ip route add default via 192.168.1.50 table 200 # ip rule add fwmark 1 table 200
# curl inet-ip.info
とりあえず、これで問題ないようですので恒久的な設定を行います。
Raspberry Pi の Raspbian Jessie では、固定 IP の設定は /etc/dhcpcd.conf に設定してあります。
# vim /etc/dhcpcd.conf
interface eth0 static ip_address=192.168.1.201 static routers=192.168.1.1 static domain_name_servers=192.168.1.92
Google のAPIには、サービスアカウントというものがあり、個人のアカウントとは独立したサービスを受けることができます。
GoogleDrive をサービスアカウントで利用すると、そのサービスアカウントでしかアクセスできない独立したドライブスペースの割当*1を受けることができます。そのドライブスペースを X-elFinder の微リュームとしてマウントして利用してみよう!という話です。