• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

metric

date: 2020-06-05 excerpt: metric

tag: metric


metric

  • ip route で設定できるrouteの優先順位のことである

ユースケース

  • multi gatewayとかをやっているときに、ポート数の関係でIPアドレスベースでgatewayを振り分けるときなどがほしい。
  • 特にDNSやよく使うウェブサイトなどは、ポート数が少なくても、高速な回線に流したいなどはあるはずである

Google ChromeからHistoryのダンプ

  • google chromeのログからよくアクセスするサイトのIPを取り出してそのIPを高速なゲートウェイに振り分ける
import pandas
import os
from urllib.parse import urlparse
import socket
from tqdm import tqdm
import pandas as pd

os.system("/usr/bin/sqlite3 ~/Library/Application\ Support/Google/Chrome/Default/History > history.log <<EOF \nselect * from urls;")
netlocs = set()
for line in open("./history.log"):
    line = line.strip()

    splits = line.split("|")

    url = splits[1]
    p = urlparse(url)
    netloc = p.netloc
    netlocs.add(netloc)

objs = []
for netloc in tqdm(netlocs):
    try:
        if netloc == "":
            continue
        ipaddr = socket.gethostbyname(netloc)
        obj = {"netloc":netloc, "ipaddr":ipaddr}
        objs.append(obj)
    except:
        ...

df = pd.DataFrame(objs)
df.to_csv("netloc_ipaddr.csv", index=None)

netlocとipaddrの対応表から、ip routeで優先デバイスを設定

import pandas as pd
import os
df = pd.read_csv("netloc_ipaddr.csv")

dev = "ip6tunnel02"
for netloc, ipaddr in zip(df.netloc, df.ipaddr):
    cmd = f"sudo ip route add {ipaddr}/32 dev {dev} metric 0"
    print(cmd)
    os.system(cmd)

有名なところのIP address

steam

# ip route add 23.0.0.0/8 dev ip6tunnel02 metric 0

DNS

# 1.0.0.1/32
# 1.1.1.1/32
# 8.8.8.8/32
# 9.9.9.9/32


metric Share Tweet