记录如何快速搭建一个 VPN
当然用 docker。
docker pull fcojean/l2tp-ipsec-vpn-server
参考文档安装即可:https://hub.docker.com/r/fcojean/l2tp-ipsec-vpn-server 。
它帮你把 /etc/sysctl.conf 什么的都配好了,只要注意给特殊权限就能启动,很重要的一点是,宿主机需要:
modprobe af_key
docker-compose 例子:
vpn:
image: fcojean/l2tp-ipsec-vpn-server
privileged: true
environment:
VPN_DNS1: dns # optional
VPN_IPSEC_PSK: x
VPN_USER_CREDENTIAL_LIST: |
[
{"login": "q", "password": "1"},
{"login": "w", "password": "2"}
]
volumes:
- /etc/localtime:/etc/localtime:ro
- /lib/modules:/lib/modules:ro
ports:
- 500:500/udp
- 4500:4500/udp
# optional
dns:
image: andyshinn/dnsmasq
macOS 可以用,连上后,可选发送所有流量,也可自定义路由:
route add 10.1.0.0/24 192.168.42.1 route delete 10.1.0.0/24
Linux:
ipsec up myvpn echo "c myvpn" > /var/run/xl2tpd/l2tp-control ip route add 10.1.0.0/24 via 192.168.42.1 ip route del 10.1.0.0/24 echo "d myvpn" > /var/run/xl2tpd/l2tp-control ipsec down myvpn
参考:https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/clients-zh.md
另外,可以 dnsmasq 负责解析 compose/k8s 的内部域名,vpn 服务设置环境变量 VPN_DNS1: dns,用户拨号上去后,即可完全融入其中的环境,非常方便开发。
https://github.com/sshuttle/sshuttle, poor man's VPN, VPN over ssh.
sshuttle --dns -r hk.remote 0/0 # or sshuttle --dns -r work.remote 192.168.0.0/16 172.16.0.0/12 10.0.0.0/8 # sudo no password chmod +s $(which sshuttle)
compose/k8s 上面可以搭建一个 sshd,sshuttle 连上去后可以融入环境,效果和作用和上面一样,额外还能打隧道,参考 lwzm/sshd https://hub.docker.com/repository/docker/lwzm/sshd
打算以 app.namespace 的方式访问 k8s 的服务,需要注意配置 /etc/resolv.conf: search svc.cluster.xxx 。