strongSwan

androidipsec xauth vpn接続
目的はDNSだけは自宅サブネットにおいてあるものを使いたい。
メモ書きでまとまってない

いるもの
/usr/ports/security/strongsSwan(xauthを有効)
再構築したカーネル
オプション

options   IPSEC
options   IPSEC_NAT_T
device    crypto

ネットワーク

VPN鯖
  192.168.1.1/24   サーバのIPアドレス(re0)
  10.10.10.3/24    VPNで使うサービス用サブネット(alias)
  10.10.20.3/24    VPN鯖のアドレス
DNS鯖
  10.10.10.1/24    

rc.conf

strongswan_enable="YES"
gateway_enable="YES"
pf_enable="YES"
pf_rules="/etc/pf.conf"

パケット転送の有効化とNATのためにPFを使う

pf.conf

ext_if="re0"
jails_subnet="10.10.20.0/24"
nat on $ext_if from $jails_subnet to ! $jails_subnet -> ($ext_if)

どっかで見つけてきたJAILを使うサンプルをコピー
10.10.20.xxから来たらnatして出ていく。

ipsec.conf

config setup

conn %default
    leftsubnet=10.10.0.0/16
    auto=add
    rightsourceip=10.10.20.10/32
    rightdns=10.10.10.1
    dpdaction=clear

conn XAuth
    leftauth=psk
    rightauth=psk
    rightauth2=xauth

クライアントは10.10.20.10を割り振る
leftsubnetがあんまり意味がわからない。いらないのか?
rightdnsがクライアントに渡される

ipsec.secret

# ipsec.secrets - strongSwan IPsec secrets file
: PSK "共有フレーズ"
user : XAUTH "password"

共有フレーズとuser,passwordを設定しておく

Android側はIPSec Xauth PSKを選んで
共有フレーズとuser,passwordを設定する。
ルーティングに10.10.0.0/16を指定。

これでそれっぽくいってそう。
ローカルLANなので外側LANからは今度試す。

欲しいのはDNS鯖だけなのでVPN鯖兼DNS鯖にすれば
NATとかいらなくなりそう。