ドメイン名から静的ルートを設定する

投稿者: | 4月 1, 2024

はじめに

LinuxとSoftetherを組み合わせて使用しているとroute選択でわけわからない事になって、VPN接続用のパケットをVPN先のデフォルトゲートウェイに送ってしまい通信切断みたいなアホみたいなことが起きてしまいます。これを手っ取り早く解決するのは、静的ルートを設定することです。ただ、静的ルートはドメイン名では指定ができないんです。

問題点

静的ルートを設定するには、ドメイン名ではなく、IPアドレスで指定しなければなりません。
これを手っ取り早く解決するためにシェルスクリプトを作成しました。

作成したシェルスクリプト

ashかshを使用して下さい。domain、interface、gateway、dns_serverは任意のものに変えて下さい。

#!/bin/sh

domain="example.com"
interface="eth0"
gateway="192.168.0.1"
dns_server="8.8.8.8"

# solve address
ip_address=$(nslookup $domain $dns_server | grep Address | awk '{ print $2 }' | grep -v ':' | grep -v '#' | head -n 1)

echo "$ip_address"

# check ip_address
if [ -z "$ip_address" ]; then
    echo "ip_address is invalid"
    exit 1
fi

# set route
ip route add $ip_address via $gateway dev $interface

# display result
echo "add route: $ip_address via $gateway dev $interface"

あとは、cronで5分とか10分おきに実行するようにしておけば大丈夫だと思います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)