• 使用 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

  • 让 Aliyun ECS 支持 IPv6

    转自 https://i-meto.com/post/82/

    我校夜间断网,然而IPv6不受影响,手上有一个Aliyun的ECS,于是打算给ECS弄个IPv6,再架设一个代理。

    申请

    我们利用 HE.net 提供的免费 IPv6 隧道来实现,这种方法有一个前提,就是你的 VPS 必须是独立 IP 的,并且支持双向 Ping 通。
    首先我们进入官网申请一个用户,这个没什么难点,用户信息可以填写真实的,不用担心泄露问题。
    然后点击左上角的 Create Regular Tunnel 创建一个 IPv6 隧道。在 IPv4 那一栏填入自己 VPS 的 IP,节点选择 HK 或者 JP。
    申请成功后打开 Example configurations 选项卡,OS 选择 Linux-route2,会看到类似以下配置信息:

    modprobe ipv6
    ip tunnel add he-ipv6 mode sit remote ***.***.***.*** local ***.***.***.*** ttl 255
    ip link set he-ipv6 up
    ip addr add 2001:470:***:***::2/64 dev he-ipv6
    ip route add ::/0 dev he-ipv6
    ip -f inet6 addr

    在运行这些命令之前,我们还需要做一件事。

    配置

    阿里云默认禁用掉了 IPv6 支持,所以我们需要在配置文件里面将其打开:

    1. 打开 /etc/sysctl.conf
    2. 修改其中的 net.ipv6.conf.all.disable_ipv6net.ipv6.conf.default.disable_ipv6net.ipv6.conf.lo.disable_ipv6,把后面的值 1 全部改为 0
    3. reboot 重启

    验证

    运行 ifconfig ,查看接口是否正常。

    添加 DNS 记录

    为了方便,可以给获得的 IPv6 地址绑一个域名,加上一个AAAA记录即可。

  • OpenWRT配置IPv6的NAT

    本人所在学校的IPv6因为各种原因(好吧其实是因为我不懂),默认情况下只能让路由器获得正常的IPv6访问,又或者是不用路由器直接接PC,PC可以正常使用IPv6。使用了路由器,下面的设备可以获取IPv6地址,可以通过IPv6 Ping通路由器,然而不能访问外网的IPv6地址。

    尝试过各种方案,如已经被OpenWRT抛弃的6relayd,还有ndppd和北邮的napt66(insmod之后路由就重启了),均失败。最后只能在路由器上架设代理,PC通过代理才勉强解决。

    今天偶然得知:ip6tables可以NAT IPv6,而且是相当久之前的功能了,怎么我之前就不知道呢 (;´д`)ゞ

     

    好了进入正题。

    首先我们需要在基于OpenWRT的路由器上安装两个kernel modules: kmod-ip6tables 和 kmod-ipt-nat6,如果提示内核版本不对,刷固件换内核吧。(自己编译固件就没这样的问题)

    之后,运行

    ip6tables -t nat -L

    如果有输出就说明NAT表可用。

    然后,在开机启动脚本上添加一行

    #有人说这样比较不优雅,其实也可以直接改LAN的配置
    ifconfig br-lan xxxx:xxxx:xxxx:xxxx::1/64

    其中,IPv6地址是路由器WAN6自动获取到的地址的前4段。

     

    之后是在 /etc/config/network 里删除 IPv6 ULA prefix。

     

    然后打开 /etc/config/dhcp ,config dhcp ‘lan’ 里改成类似这样:

    config dhcp 'lan'
        option interface 'lan'
        option start '100'
        option limit '150'
        option leasetime '12h'
        option ra 'server'
        option dhcpv6 'server'
        option ra_management '1'
        option ndp 'relay'

    最重要的应该是 option ra ‘server’ 和 option dhcpv6 ‘server’ 两行。(改成server或者hybrid)

    最后配置ip6tables。在 /etc/firewall.user 中加入

    ip6tables -t nat -I POSTROUTING -s xxxx:xxxx:xxxx:xxxx::/64 -j MASQUERADE  #其中的IP是LAN的前4段

    然后重启路由器,应该就OK了。

     

    相关参考:

    1. OpenWRT配置IPv6的NAT(一般结合isatap使用):https://blog.blahgeek.com/2014/02/22/openwrt-ipv6-nat/

  • Openwrt上通过ddns-scripts实现dnspod域名的基于ipv6的ddns

    上一篇文章中,我们通过ddns-scripts和一个外部的.php文件,实现了dnspod上的ipv4的ddns功能。

    最近有了ipv6的ddns的需求,于是在上文的基础上小改了一下,现在dnspod上的ipv6的ddns也没问题了。

     

    How?

    1.在上一篇文章的基础上,修改了一下dnspodupdate.php中的“’record_type’=>’A”为“’record_type’=>’AAAA’”,也可以直接下载:dnspodupdate6.zip,并上传到一个外网的空间上。

    2.修改路由器里的/usr/lib/ddns/dynamic_dns_functions.sh,把位于约75行的

    current_ip=$(ifconfig $ip_interface | grep -o 'inet addr:[0-9.]*' | grep -o "$ip_regex")
    

    改为

    current_ip=$(ifconfig $ip_interface | grep 'Global' | grep -o 'addr: [0-9a-f:]*' | cut -c7-)
    #我的grep和cut是现学现卖的,有没有更好的写法?
    

    不过这样一来,以“接口”来获取ip的就只能获取ipv6的地址了,如果要获取ipv4的地址,“”就选“网络”吧。

    3.打开/usr/lib/ddns/services,添加一行

    "dnspod.com_ipv6" "http://www.xxxxx.com/api/dnspodupdate6.php?username=[USERNAME]&password=[PASSWORD]&domain=[DOMAIN]&myip=[IP]"
    #注意这里的http://www.xxxxx.com/要改
    

    4.更改/etc/config/ddns的配置,service_name选dnspod.com_ipv6,再填上各种参数,这样就完成了~

  • 在Openwrt上搭建ipv6的OpenVPN服务器

    服务器端的配置

    安装OpenVPN软件

    opkg update
    opkg install openvpn openvpn-easy-rsa  #easy-rsa不一定要安装,我把easy-rsa的操作在PC上进行
    

     

    [important]下面的操作在Windows上进行,请先下载并安装Windows版的OpenVPN。如果你打算在路由上使用easy-rsa,对应的操作见文末参考来源的[/important]

    生成CA和各种证书

    修改 OpenVPN\easy-rsa\vars.bat.sample 为你的信息:

    set KEY_COUNTRY=CN
    set KEY_PROVINCE=Guangdong
    set KEY_CITY=Guangzhou
    set KEY_ORG=7forz
    set KEY_EMAIL=7f@7forz.com
    set KEY_CN=7forz
    set KEY_NAME=7forz
    set KEY_OU=7forz
    set PKCS11_MODULE_PATH=7forz.com
    set PKCS11_PIN=1234

     

    打开cmd,进入 OpenVPN\easy-rsa,运行以下命令:

    init-config

    vars

    clean-all

    build-ca (创建根证书)
    Country Name (2 letter code) [CN]:
    State or Province Name (full name) [Guangdong]:
    Locality Name (eg, city) [Guangzhou]:
    Organization Name (eg, company) [7forz]:
    Organizational Unit Name (eg, section) [7forz]:
    Common Name (eg, your name or your server’s hostname) [7forz]:
    Name [7forz]:
    Email Address [7f@7forz.com]:

    build-dh

    build-key-server server (服务器证书,server为机器名)
    Country Name (2 letter code) [CN]:
    State or Province Name (full name) [Guangdong]:
    Locality Name (eg, city) [Guangzhou]:
    Organization Name (eg, company) [7forz]:
    Organizational Unit Name (eg, section) [7forz]:
    Common Name (eg, your name or your server’s hostname) [7forz]:
    Name [7forz]:
    Email Address [7f@7forz.com]:
    Please enter the following ‘extra’ attributes
    to be sent with your certificate request
    A challenge password []:password
    An optional company name []:

    build-key client1 (创建客户端证书,client1为用户名,之后还可以创建client2,client3)
    Country Name (2 letter code) [CN]:
    State or Province Name (full name) [Guangdong]:
    Locality Name (eg, city) [Guangzhou]:
    Organization Name (eg, company) [7forz]:
    Organizational Unit Name (eg, section) [7forz]:
    Common Name (eg, your name or your server’s hostname) [7forz]:
    Name [7forz]:
    Email Address [7f@7forz.com]:
    Please enter the following ‘extra’ attributes
    to be sent with your certificate request
    A challenge password []:password
    An optional company name []:

    如果出现
    failed to update database
    TXT_DB error number 2
    错误,貌似是因为Common Name相同而导致的,请在生成时修改之或者打开keys\index.txt并清除其中内容,再执行一次build-key client1命令

    之后把 ca.crt  server.*  dh*.pem  传到路由的 /etc/openvpn 目录下

    再把 ca.crt client*.* 放到你电脑的 OpenVPN\config 目录下

    阅读更多…