• 通过 SSH 反向代理访问内网服务

    最近用到,简要记录下来。具体可参考文末的相关链接。

    前言

    首先,什么是反向代理?下图清晰地解释了它与正向代理的区别。

    反向代理的模式中,由于 proxy 的存在,可以使 client 访问本不能直接访问的 server(例如 proxy 和 server 在同一个 LAN)。且 client 只知道自己在访问 proxy,而不知道真正提供服务的是 server。

    阅读更多…
  • 使用Wireshark+SSH进行实时tcpdump远程抓包分析

    背景:有一台可以tcpdump的OpenWrt路由器,用它来抓下面的客户端的数据包。以前我一直都是把tcpdump的结果保存成.cap文件再传到PC上用Wireshark打开,直到今天,才学会了更方便快捷的办法。网上给出的命令是这样的:

    plink -ssh USER@HOST -pw PASS "tcpdump -s 0 -U -n -i br-lan -w - not port 22" | wireshark -k -i -

    其中plink是一个Windows下的命令行SSH客户端程序(Linux系统下改成ssh的相应命令)。试了一下,确实可以!

    为什么可以?

    由“|”可见它是通过管道来传输的,难道数据还能直接从输入输出传输?因此去看看文档,并找到了答案:

    在tcpdump的manpage中得知,最重要的参数是”-w -“,当文件名是”-“时,输出原数据包到stdout;-U参数是让数据包打印时直接输出到stdout而不是在输出缓存满后再输出;”-s 0″表示设置最大数据包长度为默认值(262144 Bytes)。

    而从Wireshark的帮助中可知,当抓包接口为”-“时,就从stdin读取数据,所以就ok了。

  • 使用 IPv6 通过 SSH 代理上网

    服务器为Linux系统,要架设代理服务器,若是http/SOCKS代理则需要安装软件;若是用自带的ssh来作为代理,就可以少装一个软件。

    前提

    服务器与客户端均可用IPv6。

    SSH的配置

    打开/etc/ssh/sshd_config,保证 ListenAddress 没有禁止IPv6地址,然后找到下面的 AddressFamily ,把它默认的 inet 改为 any。(inet即仅IPv4,inet6为仅IPv6,any为二者都监听)

    重启SSH服务,运行

    netstat -a

    发现 tcp 和 tcp6 都有ssh的LISTEN,就对了。

    Windows客户端的连接

    我这里用的是putty,如果是其他系统或其他客户端,请自行百度相应教程。

    在putty中,填好服务器的IPv6地址和端口后,找到 Connection→SSH→Tunnels,输入一个本地端口,然后选择 Dynamic ,点 Add ,就可以连接了。认证完成,代理就可以用了。接下来就是在浏览器中配置一个 127.0.0.1:本地端口 的SOCKS5代理,大功告成。

    20160115162622

    OpenSSH 客户端的连接(Windows/Linux)

    如果是自带 OpenSSH 客户端,如 Windows 10 或各 Linux 发行版,一条命令即可解决(先在远程服务器放好SSH公钥):

    ssh -N -D 127.0.0.1:8888 root@remote_ip