さいしょに
通常のVPN接続ではなくて、特定のタイミングでパケットロスを擬似的に発生させたり、ネットワーク遅延を意図的に起こすための環境を構築していきます。
最後の項目をやらなければ、普通のVPNです。
準備
なるべく簡単に構築したいので、ec2インスタンスにdockerの環境を構築しておきます。
ちなみに以下はAmazonLinux2なので、AmazonLinux2023だと少し導入が違うかも。
docker
$ sudo yum update
$ sudo amazon-linux-extras install docker
$ sudo service docker start
$ sudo systemctl enable docker
$ sudo usermod -a -G docker ec2-user
compose
$ sudo curl -L https://github.com/docker/compose/releases/download/v2.17.3/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/lib/docker/cli-plugins/docker-compose
$ sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
起動
sudo docker run --rm -d --privileged -p 500:500/udp -p 4500:4500/udp -p 1701:1701/tcp \
-e PSK='共有シークレットキー' \
-e USERS='ユーザ名:パスワード' \
siomiz/softethervpn
共有シークレットキーは適当な文字列にしてください。(pwgen 32 とか)
UDP 500
UDP 4500
TCP 1701
上記をFWで許可しておきます。
接続
Macの場合、L2TP over IPSecでec2インスタンスのパブリックIPへ上記共有シークレットキー・ユーザ名・パスワードで接続します。
擬似的なパケロスとネットワーク遅延
ec2で以下をインストール
$ sudo yum install dstat iproute-tc
3%パケットロス、100msの遅延をランダムに発生させる。
$ sudo tc qdisc add dev docker0 root netem delay 100ms 10ms loss 3%
遅延とパケロスを削除
$ sudo tc q
極稀にこういった環境が必要になるケースがありますが、参考までに。