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