Syncthing部署相关

1、下载和部署

这里推荐去官网下载而不是走apt-get,官网获取的版本可以开启自动更新,其他功能都一样

wget https://github.com/syncthing/syncthing/releases/download/v1.1.3/syncthing-linux-amd64-v1.1.3.tar.gz

tar -xzvf syncthing-linux-amd64-v1.1.3.tar.gz

mv syncthing-linux-amd64-v1.1.3/ /usr/local/bin

ln -s /usr/local/bin/syncthing/syncthing /usr/bin/syncthing

syncthing
#执行一下来创建配置文件

执行后可以直接关闭,然后对配置文件动手

vim ~/.config/syncthing/config.xml

#由于我是公网服务器上运行,所以寻找下面这一段

<address>127.0.0.1:8384</address>

#修改为

<address>0.0.0.0:8384</address>

#本机直接访问的不需要修改

启动后可以修改登陆密码等,页面支持中文所以GUI操作不再做说明

2、开机自动启动

syncthing的程序里提供了一个现成的模版,直接复制后启动即可使用

cp /usr/local/bin/syncthing/etc/linux-systemd/system/[email protected] /etc/systemd/system/

systemctl enable [email protected]

systemctl start [email protected]

#这里的myuser请设置为本机存在的账户,可以是root但官方不推荐

3、用nginx进行反代来访问

可以利用nginx反代来加证书、ip白名单等,下面的nginx配置供参考

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name syncthing.domain.com;

    ssl_certificate /var/www/cert/domain.com.crt;
    ssl_certificate_key /var/www/cert/domain.com.key;

    location / {
        proxy_pass http://127.0.0.1:8384;
    }
}

另外,设置好反代后,之前第2步中设置的监听全部端口的地方记得改回127.0.0.1然后重启服务。

利用tb-tun让OpenVZ使用he tunnel broker的IPv6

参考文章:
IPv6 tunnel on OpenVZ
OpenVZ 通过tb-tun 使用HE IPv6 tunnel

先决条件:
1、安装git和gcc
2、申请一个he-ipv6隧道
3、需要支持tun,可以用以下方式来确认

cat /dev/net/tun
cat: /dev/net/tun: File descriptor in bad state

如果显示No such device or address 或者是 Permission denied的话则为不支持,需要联系提供商开启,或者以下脚本“可能”有帮助

if ! [ -c /dev/net/tun ]; then
mkdir -p /dev/net
mknod -m 666 /dev/net/tun c 10 200
fi

保存为.sh后尝试执行一下再cat tun,如果正常则可以继续。

第一步:将tb-tun从git上拉下来然后编译

git clone https://github.com/acgrid/tb-tun
gcc tb_userspace.c -l pthread -o tb_userspace

第二步:配置&测试一下

setsid /root/tb-tun/tb_userspace he-ipv6 [Server IPv4 Address] [Client IPv4 Address] sit > /dev/null
ip link set he-ipv6 up
ip address add [Client IPv6 Address from HE-TunnelBroker like a:b:c:d::2/64] dev he-ipv6
ip link set dev he-ipv6 mtu 1480
ip -6 route add ::/0 dev he-ipv6
ip -6 route del default dev venet0
ip -f inet6 addr
ping6 ipv6.google.com
curl -6 ifconfig.co

只要ip配置上去并且通了就可以了。
这里有一个要注意的是:有些机器如果没有用vnet0:0方式把你的公网ip配置到你本地,而是只使用了venet0(也就是类似127.0.0.2的ip)的话,请把你的客户端ip修改为venet0的IP(也就是不写公网ip而是直接写类似127.0.0.2的ip)

第三步:上面的测试成功后配置一个自动启动

vim /etc/network/if-pre-up.d/ipv6tb

#参考文章当时使用的还是ifconfig方式,可以在系统启动的时候就被正常执行,而iproute2方式则需要放在这里,否则无法正常启动
#! /bin/sh
###BEGIN INIT INFO
# Provides:          ipv6
# Required-Start:    $local_fs $all
# Required-Stop:     $local_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the ipv6 tunnel
# Description:       ipv6 tunnel start-stop-daemon
### END INIT INFO
# /etc/init.d/ipv6tb
 touch /var/lock/ipv6tb
 case "$1" in
     start)
         echo "Starting ipv6tb with tb_userspace"
             setsid /root/tb-tun/tb_userspace he-ipv6 [Server IPv4 Address] [Client IPv4 Address] sit > /dev/null & sleep 3s #ugly, but doesn't seem to work at startup otherwise
             ip link set he-ipv6 up
             ip address add [Client IPv6 Address from HE-TunnelBroker like a:b:c:d::2/64] dev he-ipv6 #Add as many of these as you need from your routed /64 allocation
             ip link set dev he-ipv6 mtu 1480
             ip -6 route add ::/0 dev he-ipv6
             ip -6 route del default dev venet0
         ;;
     stop)
         echo "Stopping ipv6tb with tb_userspace"
             ip link set he-ipv6 down
             ip -6 route add ::/0 dev he-ipv6
             killall tb_userspace
         ;;
     *)
     echo "Usage: /etc/init.d/ipv6tb {start|stop}"
     exit 1
     ;;
 esac
 exit 0
chmod 755 /etc/network/if-pre-up.d/ipv6tb

/etc/network/if-pre-up.d/ipv6tb start

之后基本上就可以用了,可选配置一下ipv6的dns~