VPN接続張ってもなんかデータこないってことがあって、よくよく調べていくとmtuの値を小さくしないとパケットが来ないということがよくありますよね。
VPN接続の度に手動でmtuの値を変更するのも面倒なので、VPN接続が張られたら連動してmtuを変更するスクリプトを書いてみました。
目的
VPN接続したら自動的にmtuを変更する
動作環境
- Fedora 21で動作確認とってますが、最近のRedhat系OSなら同じ設定でいけると思います。
設定
/etc/NetworkManager/dispatcher.d/ に下記のようなファイルを置きます。
/etc/NetworkManager/dispatcher.d/99-vpn-up
# !/bin/sh
set -e
if [ "$2" = "vpn-up" -a "$CONNECTION_ID" = "VPN NAME" ]
then
/sbin/ip link set "$1" mtu 1346
# /usr/sbin/ifconfig "$1" mtu 1346
fi
exit 0
解説とポイントは以下です。
- 99-vpn-upのオーナーはrootにして実行パーミッションを付けておく
- 99-vpn-upのファイル名はなんでもいいのですが、同じディレクトリ内のファイルを辞書順で実行するので、依存関係的に最後の方に実行される名前がよろしいかと
- if文の$2との比較ですが、ここはVPN接続時なのでvpn-upを指定します
- if文の2つ目の条件ですが、VPN接続設定が複数ある場合でmtuを変えたいとかありましたら、明示的にVPN設定名を入れてください。VPN設定は/etc/NetworkManager/system-connectionsに設定ファイルが転がっているので、その中のidで指定されている文字列をいれてください
- ifconfigはオワコンなのでipコマンドでmtuの値を指定しましょう
- VPN接続時に作成されるデバイス名を$1を受け取っているので、そのデバイスのmtuを変更します。
それでは!