NockyGo

爱代码,爱生活

参考链接:http://wangwei.info/mac-raspberrypi3-ubuntu-mate-vncserver-installation/

  1. 从官网下载镜像:ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi.img.xz
  2. 安装解压工具:brew install xz
  3. 解压镜像:
    xz -help
    xz -d ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi.img.xz
    4.格式化sd卡并安装系统
    diskutil list # 查看磁盘列表
    diskutil partitionDisk /dev/disk2 1 MBRFormat “MS-DOS FAT32” SDSys 120GB # 格式化SD卡,SDSys为磁盘名
    sudo dd bs=4m if=ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi.img of=/dev/rdisk2 # 写入,若提示“dd: /dev/rdisk2: Permission denied”,则加入sudo命令。
    diskutil unmountDisk /dev/disk2 # 弹出,若提示“dd: /dev/rdisk2: Resource busy”也需此命令
    5.将sd卡插入树莓派,上电启动即可完成安装。
    注意:diskN中的数字N对应磁盘列表中sd卡的数字,小心格式化掉自己的系统。

在树莓派上安装VNC服务

  • sudo apt install vnc4server
    安装完成后,启动VNC服务:
  • vncserver :1
    首次启动会要求输入VNC服务的访问密码。如后期需要更改VNC访问密码,只需要输入 vncpassword 即可。
    结束一个VNCServer可以用以下的方法:
  • vncserver -kill :1
  • 修改配置文件
    nano ~/.vnc/xstartup
    在 x-window-manager & 的后面新增下面这 1 行:
    mate-session &

完整配置文件如下:

1
2
3
4
5
6
7
8
9
10
11
#!/bin/sh
# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
x-window-manager &
mate-session &

配置文件修改后,需要重启VNC服务。
Mac下的VNC客户端
Mac本身自带一个VNC客户端,叫做屏幕共享,但此程序隐藏的比较深,可以在搜索中搜索屏幕共享找到此程序。
打开屏幕共享后,输入你刚才配置的VNC服务的地址,例如:192.168.1.101:5901
5901是VNC服务的默认端口号,如果你启动了多个VNC服务(一个VNC服务对应一个用户身份),则回应多个端口号,一般来说端口号会顺延,例如: 5901 5902
此时你就可以在Mac上直接访问你的树莓派的桌面了 :-)

搭建OpenVPN (目的是用本地的mac连上公司的windows电脑)

1.wget https://git.io/vpn -O openvpn-install.sh && bash openvpn-install.sh

出现的问题

  • 客户端连上 但是上不了外网
    nano /etc/openvpn/server.conf

    1
    2
    3
    4
    5
    6
    这部分改掉,改成下面
    ;push "redirect-gateway def1 bypass-dhcp"
    push "dhcp-option DNS 223.5.5.5"
    push "dhcp-option DNS 223.6.6.6"
    原因:
    push "redirect-gateway def1 bypass-dhcp" 配置是下发了网关 下发了网关的话,客户端访问公网就不走公网网关了,都走VPN
  • 客户端连上了,但是互相ping不通

    1
    2
    在server.conf 中加一个
    client-to-client
  • 完整的server.conf 是这样的

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    port 1194
    proto udp
    dev tun
    sndbuf 0
    rcvbuf 0
    ca ca.crt
    cert server.crt
    key server.key
    dh dh.pem
    auth SHA512
    tls-auth ta.key 0
    topology subnet
    server 10.8.0.0 255.255.255.0
    client-to-client
    ifconfig-pool-persist ipp.txt
    ;push "redirect-gateway def1 bypass-dhcp"
    push "dhcp-option DNS 223.5.5.5"
    push "dhcp-option DNS 223.6.6.6"
    keepalive 10 120
    cipher AES-256-CBC
    user nobody
    group nogroup
    persist-key
    persist-tun
    status openvpn-status.log
    verb 3
    crl-verify crl.pem
  • Windows 连上上不了外网:
    windows:
    tracert 114.114.114.114 最后到114.114.114.114 说明可以
    mac:
    traceroute 默认是UDP协议,traceroute -I 114.114.114.114 也是可以的
    tracert是成功连网的。系统防火墙一般都都是阻挡的入方向,对出方向默认都是放行的,除非手动配置出方向的,才会被阻断。如果不能连接的话,一般都是在自身网关这里出问题的,或者对方禁止访问的,也有可能是网段问题(比如冲突),自身的安全策略问题可能性比较小,除非自己手动配置了出方向安全策略或者默认出方向全部拒绝。

问题解决:
client.ovpn

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
client
dev tun
proto udp
sndbuf 0
rcvbuf 0
remote 47.102.84.178 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA512
cipher AES-256-CBC
;setenv opt block-outside-dns
key-direction 1
verb 3
需要将 block-outside-dns 删掉
如果设置了 block-outside-dns ,OpenVPN 会添加 Windows 防火墙记录,拦掉除 tap 以外的所有网络接口上的 DNS 请求。
如果想全部走vpn 则使用这个。

同时修改之后 /etc/init.d/openvpn restart

  • 中途卡住的问题
    1.openvpn-install.sh 中要去调用github的代码,阿里云实例竟然获取不到github上的数据,只能手动下载,再放到服务器中,用了文件挂载 sshfs排查问题。
    2.apt-get update 一直显示 build.openvpn.net connect time out
    是因为/etc/apt/sources.list.d 中有一些缓存,需要直接删除,再处理。
0%