特定の宛先のみipv4の固定IPアドレス経由で通信する
このサイトの管理画面に403エラーで繋がらないようになってしまったので、調べたらipv6IPアドレスが一晩で切り替わっていた。
というのが数日続いたので、別セッションを張ってあるipv4の固定IPアドレス経由で通信するようにした。
- 宛先(frzl.net)はCloudFlareのDNSProxyの為、IPアドレスが不定期に変わる
- ipv6ではなくipv4で通信しなければならない
対策として、ipv4のDNSレコードのみ取得し/etc/hostsへ記述し、
都度static route へ記載することで実現できた。
#!/bin/bash
export PATH=$PATH:/sbin
_TGT=frzl.net
_CHECK_IPADDRESS=$(host $_TGT hayes.ns.cloudflare.com | grep "${TGT}\ has\ address" | awk '{print $4}')
#_NEW=$(host $_TGT hayes.ns.cloudflare.com | grep "${TGT}\ has\ address" | awk '{print $4}'|head -n2)
_GW=172.24.44.200
_HOSTS=/etc/hosts
echo $_CHECK_IPADDRESS
for _NEW in $_CHECK_IPADDRESS
do
grep "$_NEW" $_HOSTS | grep $_TGT
if [ $? = 0 ];then
exit 0
fi
done
ip route del `ip route show table 1` table 1
ip rule del table 1 pref 32765
sed -i -e "/^##\ START\ ${_TGT}\ ##$/,/^##\ END\ ${_TGT}\ ##$/d" $_HOSTS
sed -i -e "s@^##\ CHANGE_UNDER_HERE@##\ CHANGE_UNDER_HERE\n##\ START\ ${_TGT}\ ##\n${_NEW} ${_TGT} www.${_TGT}\n##\ END\ ${_TGT}\ ##\n@" $TARGET $_HOSTS
ip rule add table 1 pref 32765
ip route add $_NEW via $_GW table 1
cron
@reboot /bin/bash /root/bin/staticroute-add-to-frzl.net.sh >/root/bin/staticroute-add-to-frzl.net.sh.log 2>&1
*/30 * * * * /bin/bash /root/bin/staticroute-add-to-frzl.net.sh >/root/bin/staticroute-add-to-frzl.net.sh.log 2>&1
2/4 DNSroundrobinに対応させました。