簡易 VPN: socat & openssh
為了要建一個 L2 VPN tunnel, 想利用到 Linux 的 tap device, 所以想找合適的 TUN/TAP based 的 tunnel 程式, 首先測試了最簡單的 socat
Server 端:
#!/bin/sh OPT=iff-up,iff-promisc,iff-no-pi,tun-type=tap,tun-name=tap0 socat -d -d TCP-LISTEN:11443,reuseaddr,fork TUN:192.168.32.1/24,up,$OPT
Client 端:
#!/bin/sh OPT=iff-up,iff-promisc,iff-no-pi,tun-type=tap,tun-name=tap0 socat -d -d TCP:vpn-server:11443 TUN:192.168.32.2/24,up,$OPT
或者用 openssh 加密
socat -d -d \ TUN:192.168.32.2/24,up,tun-type=tap \ SYSTEM:"ssh root@vpn-server socat -d -d - 'TUN:192.168.32.1/24,up,tun-type=tap'"
直接使用 openssh
1. 要將 server 端的 sshd_config 的 PermitTunnel yes
2. 然後先把 tap0 跟 key 建好:
tunctl
3. client 端
ssh -o Tunnel=ethernet -c aes128-ctr -f -w 0:0 vpn-server true ifconfig tap0 192.168.32.2 pointopoint 192.168.32.1 ssh vpn1 ifconfig tap0 192.168.32.1 pointopoint 192.168.32.2
但是上面兩種 tunnel 都不穩定,換用 openssh-hpn 也是一樣.
ping -f 192.168.32.1 不一會就掛了.
最後還是回到 OpenVPN 最穩定了
參考資料:
OpenSSH 自4.3之后提供了一个简单的VPN支持,是不同于ssh隧道代理的完整的vpn称之为ssh vpn吧,有兴趣的参看以下文字搭建
https://help.ubuntu.com/community/SSH_VPN
http://www.debian-administration.org/articles/539
http://wiki.enigmacurry.com/OpenSSH
http://www.perturb.org/display/entry/770/
http://prefetch.net/blog/index.php/2008/06/26/opensshs-vpn/
发表评论