yjiang's cake

osx的命令行与linux的命令行

在日常使用osx命令行过程中,发现与linux下用法上有些区别,虽然无伤大雅但总让人觉得不爽.

例如常用的复制命令cp:

linux :  cp <dir1> <dir2> -r 或 cp -r <dir1> <dir2>
osx   :  cp <dir1> <dir2> -r

这些区别是因为osx与linux所遵循不同开源协议导致的

  • osx遵循的是BSD协议
  • linux遵循的是GNU协议

(有关更多开源协议的区别请自行查阅)

使osx支持GNU协议的命令行

brew install coreutils

需要注意的是coreutils只包含一些基本的命令,例如ls cat cp mv等.

ubuntu下使用pptpd创建VPN Server

安装

sudo apt-get install ppp pptpd

配置VPN的IP段,打开文件

sudo vi /etc/pptpd.conf

添加内容如下

localip 192.168.34.1
remoteip 192.168.34.2-10

mtu 1400
mru 1400

此处设置VPN服务器端IP地址为192.168.34.1,客户端接入IP段为 192.168.34.2-10

配置服务器DNS服务,打开文件

sudo vi /etc/ppp/pptpd-options

修改或添加如下

ms-dns 8.8.8.8
ms-dns 114.114.114.114

添加VPN用户,打开文件

sudo vi /etc/ppp/chap-secrets

添加格式如下

# client    server  secret          IP addresses
  username  pptpd   password        *

使NAT PPTP连接生效

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

配置NAT PPTP连接,并加入开机启动

sudo vi /etc/rc.local
#加入exit 0之前
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#eth0根据自己实际情况网卡填写, 使用ifconfig命令查看

启用 IPv4 转发

sudo vi /etc/sysctl.conf

修改如下

net.ipv4.ip_forward=1

使IPv4转发生效

sudo sysctl -p

android 5.0 去除wifi及信号标志上的感叹号

原因

android 5.0增加了网络可用性监测,但是检测服务器是google自己的服务器,然后...gfw

手机及电脑所需条件

  • 手机root权限
  • 电脑已安装adb tools

方式1 自建服务器,nginx/apache url_rewrite

#此处以nginx为例,增加如下url_rewrite规则
location /generate_204 { return 204; }

方式2 空文件

直接在网站的根目录下建立一个generate_204空文件,因为wifi监测机制中返回的内容为空也会当成204

创建好监测服务器后,执行如下

adb shell su -c "settings put global captive_portal_server {domain}"

方式3 永久禁用检查

adb shell su -c "settings put global captive_portal_detection_enabled 0"

为SSH创建权限最小化用户

目的

临时给朋友使用自己的SSH代理,但是又不想分配任何VPS的权限

方法

#useradd时使用-s参数为new session指定login shell
useradd -s /bin/false <username>
passwd <username>

使用

此方法添加的用户无法进行ssh操作,作为代理时需要勾选`不分配终端`或使用
ssh -CfNg -D <port> <username>@<ip>

使用AUTOSSH保证连接稳定性

#-M autossh的echo机制使用的端口,可以是任意不被占用的端口

autossh -M <monitor_port> <ssh command>

如: autossh -M <autossh_port> -CfNg -D <port> <username>@<ip>

ssh参数说明

-C #数据压缩
-f #后台运行
-N #不执行脚本或命令
-g #允许远程主机连接转发端口
-D <port>转发到本地端口

SSH反向代理的应用--跳板

目的

机器B做跳板,从机器A访问机器B的2222端口时,重定向到机器C的22端口

登陆机器B执行

ssh -CfNg -L 3333:{机器C的IP}:22 user@{机器C IP}

参数说明 </h4>

-C  表示压缩数据传输
-f  表示后台用户验证,这个选项很有用,没有shell的不可登陆账号也能使用
-N  表示不执行脚本或命令
-g  表示允许远程主机连接转发端口(在本文示例中此参数并未生效,原因不明,所以才有了步骤2)

-L  表示本地转发  ssh -L <local port>:<remote host>:<remote port> <SSH hostname>

-R  表示远程转发  ssh -R <local port>:<remote host>:<remote port> <SSH hostname>

扩展应用

  • 对单线路国外VPS使用国内阿里云等多线VPS作为跳板进行加速
  • 换成非22端口亦可以,例如把机器C的80转发到机器B的8000
  • 在没有路由权限的情况下,内网映射端口到外网(//todo)

注意事项

  • 非管理员帐号无权绑定 1-1023 端口

参考引用

Copyright © 2016 yjiang's cake

返回顶部