はじめに
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分おきに実行するようにしておけば大丈夫だと思います。