在 bananian 上安装配置 Tor

本文假设已经在 Banana Pi R1 上安装了 bananian version: 16.04 (released 2016-04-23) 并运行了监听于 127.0.0.1:2080 的 Socks5 代理服务器,且其内网 IP 地址为 10.5.2.1。

安装

apt install tor
apt install tor-geoipdb

配置

在文件 /etc/tor/torrc 添加如下内容:

SocksPort 10.5.2.1:9050
ExcludeNodes {cn},{hk},{mo},{kp},{ir},{sy},{pk},{cu},{vn}
StrictNodes 1
Socks5Proxy 127.0.0.1:2080

日志

/var/log/tor/log

使用

在浏览器等上设置使用 SOCKS v5 代理服务器,主机为 10.5.2.1,端口为 9050。

#banana-pi-r1, #bananian, #bpi-r1, #debian, #jessie, #socks5, #tor

Advertisements

在 Banana Pi R2 上安装 Ubuntu 并设置 NAT、DNS 缓存服务器和 DHCP 服务器

下载操作系统镜像文件

下载 2017-09-04-ubuntu-16.04-mate-desktop-bpi-r2-sd-emmc-v1.2.0.img.zip

解压缩 zip 文件

unzip 2017-09-04-ubuntu-16.04-mate-desktop-bpi-r2-sd-emmc-v1.2.0.img.zip

dd 到 SD 卡

下面的命令是在 macOS 上的示例,其它操作系统请自行修改。

列出磁盘以便找到 SD 卡对应的设备路径

diskutil list

unmount disk

注意替换下面的 diskN。

diskutil unmountDisk diskN

注意替换下面的 diskN,且 of 参数不要写错,否则 of 参数所指磁盘数据会丢失。

sudo dd if=2017-09-04-ubuntu-16.04-mate-desktop-bpi-r2-sd-emmc-v1.2.0.img of=/dev/diskN bs=1m conv=sync

开机

将 SD 卡插入 Banana Pi R2,按住电源按钮几秒钟,直到电源插孔旁边的三个指示灯中间那个红灯长时间亮起。

电源按钮按下时,标有 R、G、B 的三个指示灯会长时间亮起;按下约8秒,标有 B 的指示灯熄灭,电源插孔旁的蓝色和绿色指示灯依次闪烁一下后,紧挨的红色指示灯长时间亮起,此时保持电源按钮按下约1秒后,接在 HDMI 接口的显示屏上会有内容显示,此时可以松开电源按钮。

操作系统默认用户名/密码为 pi/bananapi 和 root/bananapi。

设置网络接口

添加文件 /etc/network/interfaces.d/eth0,内容为:

auto eth0
iface eth0 inet static
	address 10.5.2.1
	network 10.5.2.0
	netmask 255.255.255.0

执行下面的命令使得上述对网络接口 eth0 的配置生效:

service networking restart

允许 IPv4 转发

添加文件 /etc/sysctl.d/60-ipv4-forward.conf,内容为:

net.ipv4.ip_forward=1

并执行下面的命令使得 IPv4 转发生效:

service procps start

(或者每次开机后都执行命令 echo 1 > /proc/sys/net/ipv4/ip_forward。)

配置 iptables

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -A FORWARD -i eth1 -o eth0 -m state –state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

注意这些 iptables 的设置在操作系统重启后并不会保持。可以使用 iptables-save、iptables-restore 和 iptables-persistent 来转存、恢复和持久化 iptables 规则。

安装 iptables-persistent

apt install iptables-persistent netfilter-persistent

安装结束后会询问是否保存 iptables 规则,选择保存就可以了。它将规则保存于目录 /etc/iptables/。
在修改了 iptables 规则后,需要重新保存,可使用命令:

service netfilter-persistent save

安装和配置 DNS 缓存服务器和 DHCP 服务器

安装 dnsmasq

apt install dnsmasq

添加文件 /etc/dnsmasq.d/dhcp.conf,内容为:

dhcp-range=10.5.2.50,10.5.2.150,12h

使用如下命令重启 dnsmasq 使得 dhcp-range 配置生效:

service dnsmasq restart

#banana-pi-r2, #bpi-r2, #dhcp, #dnsmasq, #iptables, #iptables-persistent, #linux, #nat, #netfilter-persistent

Incor…

Incorrect key file for table ‘/var/db/mysql_tmpdir/#sql3cce_1_3.MYI’; try to repair it

MySQL 报这样的错误有可能是因为 max_heap_table_size 或 tmp_table_size 设置得太小了。

#MySQL

Aliyun 华东1 系列III 共享计算型 n4 1核 2GB(ecs.n4.small) ubench

Unix Benchmark Utility v.0.3
Copyright (C) July, 1999 PhysTech, Inc.
Author: Sergei Viznyuk
http://www.phystech.com/download/ubench.html
FreeBSD 11.0-RELEASE-p9 FreeBSD 11.0-RELEASE-p9 #0: Tue Apr 11 08:48:40 UTC 2017 root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC amd64
Ubench CPU: 448094
Ubench MEM: 575176
——————–
Ubench AVG: 511635

#ubench

Aliyun 华东1 可用区C 标准型s1 CPU 1 Core, Mem 2GB ubench

Unix Benchmark Utility v.0.3
Copyright (C) July, 1999 PhysTech, Inc.
Author: Sergei Viznyuk
http://www.phystech.com/download/ubench.html
FreeBSD 11.0-RELEASE-p9 FreeBSD 11.0-RELEASE-p9 #0: Tue Apr 11 08:48:40 UTC 2017 root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC amd64
Ubench CPU: 291245
Ubench MEM: 476280
——————–
Ubench AVG: 383762

#ubench

Aliyun 华东1 可用区D 标准型s3 CPU 4 Cores, Mem 8GB ubench

Unix Benchmark Utility v.0.3
Copyright (C) July, 1999 PhysTech, Inc.
Author: Sergei Viznyuk
http://www.phystech.com/download/ubench.html
FreeBSD 11.0-RELEASE-p9 FreeBSD 11.0-RELEASE-p9 #0: Tue Apr 11 08:48:40 UTC 2017 root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC amd64
Ubench CPU: 1000241
Ubench MEM: 698270
——————–
Ubench AVG: 849255

#ubench

Access-Control-Expose-Headers: X-Auth-Token

import org.apache.cxf.rs.security.cors.CrossOriginResourceSharingFilter;
...
	@Bean
	public CrossOriginResourceSharingFilter crossOriginResourceSharingFilter() {
		final CrossOriginResourceSharingFilter corsf = new CrossOriginResourceSharingFilter();
		final List<String> exposeHeaders = new ArrayList<>(corsf.getExposeHeaders());
		exposeHeaders.add("X-Auth-Token");
		log.debug("exposeHeaders: {}", String.join(", ", exposeHeaders));
		corsf.setExposeHeaders(exposeHeaders);
		return corsf;
	}
...

See also:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Access-Control-Expose-Headers
http://cxf.apache.org/docs/jax-rs-cors.html

#apache-cxf, #cors, #java, #jax-rs, #spring-boot, #spring-session