2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

v6プラスでもIPアドレスを複数使いたい。

Last updated at Posted at 2019-02-06

フレッツ光の通信速度1Mbps(夜間帯)に耐え切れず、増速の可能性を求めてv6プラスへと移行することにしました。
v6プラスではIPが1つしかもらえないようなので、複数のIPアドレスを使いTai!場面で困った!のでメモです。
あなたにもきっといつかそんな日が訪れます。

今までやっていたこと

  1. IRCでnickを複数使いたい
  2. IRCと同じIPで接続したいWebサイトがある
  3. IRCと違うIPで接続したいWebサイトがある。 ---C

ので、PPPoEマルチセッション、Proxyサーバ、ソースルーティングを構成し、
接続先によってPPPoEのセッションを振り分けていました。

回線振り分けの考え方

特定のWEBサイト(C)だけメインじゃないPPPoE接続する。

ルータ

  1. PPPoマルチセッション設定を行う。(PPPoE-A接続、PPPoE-B接続)
  2. ソースルーティングで特定のIPアドレス(Proxyの2ndIP)からの通信は、PPPoE-B接続を使うように設定する。

Proxyサーバ

  1. ECS LIVAを使ってます。
  2. Ubuntu16.04LTS 、 squid 、samba、nadoka(IRCProxy)を入れる。
  3. NW:複数IPを設定する。参考:itmedia
  4. Squid:複数ポート(3128,8081の2ポート)でLISTENさせる。
  5. Squid:8081ポートでリクエストを受けた場合は2つ目のIPを使って通信するように設定する。Squid公式:tcp_outgoing_address
squid.conf
# tcp_outgoing_address の設定はこんな感じにしていた(どうせ忘れるから書いておこう)
acl pppoea localport 3128
acl pppoeb localport 8081
tcp_outgoing_address 192.168.10.15 pppoea 
tcp_outgoing_address 192.168.10.17 pppoeb 

※ルータのソースルーティングで.17はPPPoE-B接続を使うとしているのです。

Proxyパック

  1. PPPoE-Bで接続したいサイトは:8081、その他は:3128でProxy接続するように定義ファイルを作る。(DIRECTでもよいが)
  2. Proxyパックをsambaの公開領域へ保存

クライアントPC

  1. ブラウザでProxyパックを設定する。
Firefox.option
Firefoxの場合です。
file://///192.168.10.hogehoge/opt/proxy.pac

V6プラス導入後

  1. v6プラスとPPPoEの同時接続をできるようにしてグローバルIP数を稼ぐ
  2. プロトコルと利用用途(httpとIRCはPPPoE、でもYoutubeはv6プラス)によって利用回線を変更する。

物理


GE-PON------ルータA(Aterm WG2600HP3) <---v6プラス接続用(新規)
        |
        ----ルータB(MR-GL2000)<----いままでのルータ

※ルータAとBのLAN側ポート同士は結線してます。

回線振り分けの考え方

youtubeで画像が荒い、止まるのが困っていたので今後の回線の考え方を変更しました。

  1. 基本的にはv6プラス接続の速い回線を使う ---A
  2. IRCはv6プラス回線を使わない---B
  3. 特定のWEBサイトはA、Bと違う回線で接続する。 ---C

ルータ

  1. 新ルータはv6プラス設定のみした。
  2. 旧ルータの設定はそのまま。

Proxyサーバ

IRCへの接続(6667ポートのみ)、Squid:8081で受けた接続(2nd IP)をルータBへ流す。という設定をした。
これらの経路設定はip routeとiptablesを使う。参考:@IT

設定概略

  1. iptablesのchainで任意のパケットにマーク (Proxyの2ndIPでの通信、若しくは6667ポートあてのIPの通信)
  2. ip route で作ったDGWへ流す
設定
# echo 1 > /proc/sys/net/ipv4/ip_forward
# cat /proc/sys/net/ipv4/ip_forward
1になってること

# vi /etc/iproute2/rt_tables
200     pppoegw
一行追加

# ip rule add fwmark 200 table pppoegw                <--- 200という印があったらpppoegwを使って通信する
# ip route add table pppoegw default via ルータBのIP   <--- pppoegw のルーティングテーブル
# iptables -t mangle -A OUTPUT -s Proxyサーバの2ndIP -j MARK --set-mark 200 <---このIPアドレス(2ndIP)からの通信に印をつける
# iptables -t mangle -A OUTPUT -p tcp --dport 6667 -j MARK --set-mark 200 <---このポート(6667)あての通信に印をつける

狙い通りにできた。
IRCはPPPoEセッション(B)でのアクセス
HTTP(Proxy:8081)経由はPPPoEセッション(C)でのアクセス
HTTP(Proxy:3128)経由はv6プラス(A)でのアクセス

ただし、これでは再起動で消えてしまうため設定ファイルを修正する。

永続的な設定

sudo vi sysctl.conf
	#net.ipv4.ip_forward=1
	↓
	net.ipv4.ip_forward=1


sudo vi /etc/iproute2/rt_tables
	200     pppoegw


sudo vi /etc/network/interfaces

up ip rule add fwmark 200 table pppoegw
up ip route add table pppoegw default via ルータBのIP
up iptables -t mangle -A OUTPUT -s Proxyサーバの2ndIP -j MARK --set-mark 200
up iptables -t mangle -A OUTPUT -p tcp --dport 6667 -j MARK --set-mark 200


del iptables -t mangle -D OUTPUT -s Proxyサーバの2ndIP -j MARK --set-mark 200
del iptables -t mangle -D OUTPUT -p tcp --dport 6667 -j MARK --set-mark 200
del ip rule del fwmark 200 table pppoegw
del ip route del table pppoegw default ルータBのIP

とかいいつつ

今回新たに設定したぜ!のように書いていますが、
この方式自体はMR-GL2000購入前、ブロードバンドルータを2台並列にしていたころ(2007年ころ~?)に似たような設定をしていて、
そのカスタマイズなんですよね、、、
当時は玄箱でサーバ立てて遊んでいたような気がします。

後日談

ストロングゼロやりながらメンテしていたのですが、他のサーバのOSを最新化する作業の際に、Proxyサーバが18.04LTSになっていました。。。
趣味だと適当すぎてヤバイ。でも趣味だから失敗しても楽しい。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?