UECのL2TP/IPSecVPNをOpenWrtで張る備忘録
環境
- OpenWrt 21.02.0-rc4 r16256-2d5ee43dc6
 - Core i7 3930K
 - RAM 64GB
 
必要なpackage
- strongswan-full(fullは要らないかもしれない)
 - xl2tpd
 
opkg install strongswan-full
opkg install xl2tpd
strongswanでIPSecの設定
/etc/ipsec.confでコネクションの設定
connの部分は好きな名前で(例ではuec-vpn)
後で接続の時とかに使う
conn uec-vpn
        type=transport
        authby=secret
        rekey=yes
        keyingtries=1
        keyexchange=ikev1
        ike=aes128-sha1-modp1024
        esp=aes128-sha1
        left=%any
        leftprotoport=udp/l2tp
        right=VPNサーバのIP
        rightprotoport=udp/%any
        auto=start
        dpdaction=restart
/etc/ipsec.secretsで事前共有鍵の設定
半角スペースでちゃんと区切らないとうまく読み込まない
鍵が見つからない的なエラーは大体そのせい
VPNサーバのIP : PSK "事前共有鍵"
接続
接続前にipsecをリロードすること
/etc/init.d/ipsec reload
ipsec upで接続
ipsec up uec-vpn
ステータス叩いてupしていれば成功
ipsec status uec-vpn
以下のようなログがでるはず
Security Associations (1 up, 0 connecting):
(略)
xl2tpdでL2TPの設定
/etc/xl2tpd/xl2tpd.confの設定
globalセクションはいじらなくていいはず
[lac uec-vpn]
lns = VPNサーバのアドレス
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes
/etc/ppp/options.xl2tpdの設定
/etc/xl2tpd/xl2tpd.confのpppoptfileの部分で指定したファイル
name "UECアカウント名"
password "パスワード"
noauth
debug
dump
usepeerdns
logfd 2
logfile /var/log/xl2tpd.log #好きな場所に
noccp
novj
novjccomp
nopcomp
noaccomp
mtu 1200 #小さめにしとくと安定するらしい
mru 1200
接続
接続前にxl2tpdをreloadすること
/etc/init.d/xl2tpd reload
xl2tpd-control connect-lacで接続
xl2tpd-control connect-lac uec-vpn
ここでログファイル(例では/var/log/xl2tpd.log)を確認
うまく行けば以下のようなログが出てるはず
(略)
local  IP address xx.xx.xx.xx
remote IP address x.x.x.x
primary   DNS address UECのプライマリDNSサーバIP
secondary DNS address UECのセカンダリDNSサーバIP
ip aとかで確認してppp0とかができていれば成功
私は先にルーティング設定を行っていて激ハマりしたので繋ぐまではルーティング設定を切っとくと吉
ルーティングとか設定とか
インターフェースの設定
できたppp0等のインターフェースはOpenWrt側ではアンマネージドにすること
名前はUEC_VPNとかにするといい
新しいファイアウォールのゾーンを作って所属させる
ファイアウォールの設定
先程作ったゾーン(例ではUEC_VPN)に対して以下のように設定する
- lan → UEC_VPN
- input:accept
 - output:accept
 - forward:accept
 - Masquerading:No
 
 - UEC_VPN → lan
- input:reject
 - output:accept
 - forward:reject
 - Masquerading:Yes
 
 
ルーティングの設定
UEC向けのパケットは全部VPNに流したいが、VPNサーバだけはwanを通るようにする
静的ルーティングを設定する
- interface:wan
- ターゲット:UECのVPNサーバのIP
 - IPv4-ネットマスク:255.255.255.255
 - メトリック:0
 
 - interface:UEC_VPN
- ターゲット:130.153.0.0
 - IPv4-ネットマスク:255.255.0.0
 - IPv4-ゲートウェイ:なし
 - メトリック:0より大きくする
 
 
確認
学務情報システムとかにアクセスして二要素認証が求められなければ成功
つながらない場合はファイアウォールの設定やルーティング設定を見直すこと
学内からアクセスしたことにしたい場合はプロキシを通すと楽
dl.acm.org等にプロキシを通してアクセスすると論文を落とせる
chromeの拡張でProxySwitchyOmegaを入れるとサイトごとにプロキシ設定を変えられるので捗る
情報基盤センターはITCユーザーズガイドのlinux向け設定記事を作成するかSSLVPNを復活させてくださいお願いします
2022-04-07追記
ルーティングの設定でUEC向けの通信を全部VPNに流しているため、学内からおうちへプロキシ経由でVPNを張るとパケットが虚空へ消える
httpプロキシまたはsocksプロキシへの通信はwanへ飛ばすようにルーティングする
Discussion