连接国外网络的软件
自今年 6 月我回国以来,已经有一段时间了。 本帖旨在总结我最近使用一些非常有用的绕过技术上网的经历。
连接国外网络的软件
AT&T Passport 是 AT&T 推出的国际数据漫游计划。 启用该计划后,您在中国可以选择可用的网络运营商(如中国联通),但无需进一步规避审查,就像直接使用非中国网络运营商一样。 我不清楚其他移动网络提供商是否也有类似行为。 不过,这种方法有数据使用限制,不能随意使用。
连接国外网络的软件
连接国外网络的软件 服务器 (ocserv) 是所有手段中最有效的。 它既快又稳定。
为了简化服务器端设置,我使用了ocserv-docker和 Linode 上。 在我设置它的时候,出现了一些依赖性错误,所以我把它分叉到我的自己的 GitHub 仓库修复了错误,并建立了Docker 映像. 我在使用 UFW 的 Ubuntu 14.04 系统上运行了以下命令:
# 添加 UFW 规则 sudo ufw allow 443/tcp sudo ufw allow 443/udp sudo service iptables-persistent save sudo ufw reload # 安装 Docker 映像 mkdir -p ~/ocserv-docker/ocserv touch ~/ocserv-docker/ocserv/ocpasswd wget -O ~/ocserv-docker/ocserv/ocserv.conf sudo docker run --name ocserv -d --privileged -v ~/ocserv-docker/ocserv:/etc/ocserv -p 443:443/tcp shichaoan/ocserv-docker # 添加用户并提示输入密码 sudo docker exec -it ocserv ocpasswd shichao # 调试 sudo docker logs ocserv sudo docker exec -ti ocserv /bin/bash
然后,你可以在电脑和移动设备上安装 Cisco AnyConnect 客户端,并尝试连接服务器。
连接国外网络的软件
阴影锁也运行良好。 只是我没有费心去设置我的移动设备,即 iPhone 和 iPad。 我用我的Docker 映像其来源是shichao-an/docker-shadowsocks-libev.
连接国外网络的软件
迅捷网络(ExpressVPN)虽然它是最好的商业 VPN 之一,但大部分时间运行缓慢且不稳定,在中国基本上无法使用。
连接国外网络的软件
我所在的公司提供 Pulse Secure 连接国外网络的软件。 它可以使用,但速度非常慢。
连接国外网络的软件
虽然我买了两个 ISP 供家里上网,并设置了一个双广域网路由器来使用它们,但在繁忙的夜晚,由于 AT&T 的一系列蹩脚的出站节点,两个 ISP 的丢包率都超过了 80%,而且持续了几个小时,这常常让我感到糟透了。 这些可以通过mtr和乒. 总之,我根本无法以正常的心情使用互联网。
因此,我决定通过个人热点使用 iPhone 的 LTE 网络。 问题是如何从我的主 MacBook Pro(名为 ASC-MBP)连接到热点,同时保持对现有家庭网络(名为 TOKI-MASTER)的访问,因为我需要通过以太网访问 NAS。 显而易见的方法是黑入路由表,因此我编写了以下两个脚本,以及一个备份计划。
当互联网(两个 ISP)都出现故障或不稳定时,请执行以下操作:
在 ASC-MBP 上,以太网连接至 TOKI-MASTER(10.0.1.1):
- 在 iPhone 6 上,打开个人热点
- 在 ASC-MBP 上打开 Wi-Fi,并连接 ASC-IPHONE6
- 在 ASC-MBP 上运行 "switch-default-route "命令
- 如果网络已恢复,请关闭 WLAN,运行命令 "restore-default-route"(恢复默认路由)。
默认情况下,iPhone 热点的网关地址是 172.20.10.1,这也是它出现在脚本中的原因。
更新:2016 年 2 月 24 日
脚本会自动打开/关闭 WiFi 和连接到热点。 因此,无需手动连接热点。
我还创建了另一个脚本sbcsucks.sh测试 ISP 是否稳定。 当 ISP 稳定且无明显丢包时,运行在本地独立机器上的脚本将向 ASC-MBP 发送通知。 可以使用 GNU Screen 等工具在后台运行该脚本。
连接国外网络的软件
连接国外网络的软件
在 Linux 上,漂亮值的范围是 -20 到 19。
连接国外网络的软件
在Linux的完全公平调度程序(CFS)中,进程的 "好 "与 "重 "的映射对于计算虚拟运行时间("重 "与 "好 "之间的关系)至关重要。vruntime)的调度实体结构 (结构 调度实体). 在 Linux 2.6.34 中,它定义在重量比 (kernel/sched.c#L1356). 重量大致相当于1024/(1.25)^(nice):
静电 缢 none 重量比[40] = { /* -20 */ 88761, 71755, 56483, 46273, 36291, /* -15 */ 29154, 23254, 18705, 14949, 11916, /* -10 */ 9548, 7620, 6100, 4904, 3906, /* -5 */ 3121, 2501, 1991, 1586, 1277, /* 0 */ 1024, 820, 655, 526, 423, /* 5 */ 335, 272, 215, 172, 137, /* 10 */ 110, 87, 70, 56, 45, /* 15 */ 36, 29, 23, 18, 15, };
连接国外网络的软件
漂亮优先级和静态优先级之间的转换(优先级为正常或非 "实时 "任务)是由NICE_TO_PRIO和PRIO_TO_NICE宏。 在 Linux 3.15 之前,例如在 2.6.34 中,它定义在kernel/schedule.c;自 Linux 3.15 起,它被定义在include/linux/sched/prio.h. 从字面上看,这种关系是优先 = 漂亮 + 120因此,优先级从 100 到 139 不等。
以下是 2.6.34 源代码中的宏定义
#define NICE_TO_PRIO(nice) (MAX_RT_PRIO + (nice) + 20) #define PRIO_TO_NICE(prio) ((prio) - MAX_RT_PRIO - 20)
连接国外网络的软件
在最近关于none有一个公式独特的 = 20 - 刀将 "用户 "漂亮值 (-20...19) 转换为 "内核 "漂亮值 (40...1)。setpriority()和getpriority()系统调用。 这在定义上似乎很模糊。
自 Linux 3.16 起新的nice_too_rlimit函数添加到include/linux/sched/prio.h,似乎与上述描述相符。 该函数将 nice 值 [19,-20] 转换为 rlimit 样式值 [1,40]。 计算公式与手册页面上的公式相同。 该rlimit_too_nice进行反向操作。
静电 内联 长 nice_too_rlimit(长 漂亮) { 返回 (MAX_NICE - 漂亮 + 1); }
这里、MAX_NICE定义为 19,因此它基本上是限制 = 20 - 漂亮.
请注意,rlimit 样式值不能与 "用户优先级" (include/linux/sched/prio.h#L40),其范围为 0 至 39。
连接国外网络的软件
none设置 OpenLDAP 服务器和配置基本客户服务器. 但是,客户服务器使用nss-ldap一些已知问题在此提出. 有了这个看似漏洞百出的旧设置,我根本无法nss_initgroups_ignoreuses该选项的作用是在验证服务器上的本地用户或系统用户时绕过 LDAP 服务器进行查询。none命令的实际作用。 当 LDAP 服务器宕机或连接 LDAP 服务器的网络出现问题时,默认配置会简单地阻止本地用户登录服务器(至少会阻止很长时间,直到查询被认为超时为止)。 另外,我在检查none因为当我在路径名后按 TAB 键时,速度非常慢。 设置绑定政策选项的软和时限和bind_timelimit的值可能只是缓解症状,并不能解决问题。
因此,我决定使用 nss-ldapd 附带的libnss-ldapd包装。
apt-get install libpam-ldap nscd ldap-utils libnss-ldapd
nonenone软件包,并提示您采取交互式安装后步骤配置 LDAP 参数。 您可以禁用这种交互式行为,直接将配置放在/etc/nslcd.conf使用以下命令:
export DEBIAN_FRONTEND=noninteractive apt-get -y install libpam-ldap nscd ldap-utils libnss-ldapd
然后,将配置放入/etc/nslcd.conf:
uid nslcd gid nslcd uri ldaps: base dc=example,dc=com binddn cn=OpenLDAP Client,ou=users,dc=example,dc=com bindpw password tls_reqcert never nss_initgroups_ignoreusers ALLLOCAL bind_timelimit 3 timelimit 3
最后一行nss_initgroups_ignoreusers 本地防止通过 LDAP 查询所有本地用户的组成员资格。
其余的 PAM、sudoers 和 access.conf 设置与旧版 nss-ldap 设置基本相同。 只需确保在更改以下设置后,重新启动 LDAP 名称服务守护进程 nslcd/etc/nslcd.conf:
service nslcd restart
如果同时启用了 nscd 缓存守护进程,并且对 LDAP 中的用户进行了一些更改,则可能需要清除缓存:
nscd --失效=密码 nscd --失效=组
nslcd 守护进程的另一个优点是,它可以很容易地停止运行,以暂时禁用 LDAP 查找。 这使得 LDAP 访问管理变得更加容易。
最后,这里是设置脚本:
连接国外网络的软件
审计d可用于跟踪用户在 TTY 中执行的命令。 如果系统是服务器,用户通过 SSH 登录,则pam_tty_audit必须在 sshd 的 PAM 配置中启用 PAM 模块(以下一行必须出现在/etc/pam.d/sshd):
session required pam_tty_audit.so enable=*
然后,可以使用门户命令,例如 tty 按键:
# aureport --tty
但是,上述设置无法审计使用苏都 他 -命令。 为了审计 root 运行的所有命令、如这里所述必须在/etc/audit/audit.rules:
-a exit,always -F arch=b64 -F euid=0 -S execve -a exit,always -F arch=b32 -F euid=0 -S execve
还要确保pam_loginuid.so中启用/etc/pam.d/sshd(在 Ubuntu 14.04 中为默认值)。
none他) 将保留在日志中。 要查看审计日志,例如关于一个 uid 为 1000 的用户,可使用以下命令:
ausearch -ua 1000
这audit.log文件位于/var/log/audit.
请注意,在审计生效之前,系统需要在安装了审计d软件包或编辑这些配置文件。 以上均在 Ubuntu 14.04 上进行了测试。 下面是一个可以设置所有这些的脚本:
连接国外网络的软件
本文章将介绍如何设置 OpenLDAP 客户端服务器(Ubuntu 14.04),使其 OpenSSH 服务器能够从预先配置好的 OpenLDAP 服务器加载授权密钥,并通过ldaps://none上一篇如果尚未阅读,请先阅读)。 用户可以 SSH 方式访问该客户端服务器,而他们的 SSH 公钥则存储在 OpenLDAP 服务器上。 客户端服务器上的 SSH 验证过程主要通过以下方式进行ssh-ldap-pubkey.
连接国外网络的软件
连接国外网络的软件
apt-get -y install libpam-ldap nscd ldap-utils apt-get -y install python-pip python-ldap # pip install ssh-ldap-pubkey
连接国外网络的软件
在/etc/ssh/sshd_config:
授权密钥命令 /usr/local/bin/ssh-ldap-pubkey-wrapper 授权密钥命令用户 nobody
重启 SSH 服务器
service ssh restart
连接国外网络的软件
编辑/etc/ldap.conf:
uri ldaps: binddn cn=OpenLDAP Client,ou=users,dc=example,dc=com bindpw password
编辑/etc/pam.d/common-auth并添加以下一行:
account required pam_access.so
编辑/etc/pam.d/common-password并移除使用authtok规范
编辑/etc/pam.d/common-session并添加以下一行:
session required pam_mkhomedir.so skel=/etc/skel umask=0022
连接国外网络的软件
编辑/etc/nsswitch.conf:
passwd: compat ldap group: compat ldap shadow: compat ldap
编辑/etc/security/access.conf, 替换ldap-team实际组名:
- 除根用户(admin)(wheel)(ldap-team)之外的所有用户: 所有,本地除外
编辑/etc/sudoers使用visudo命令,并添加以下几行 替换ldap-team实际组名:
%ldap-team ALL=(ALL) ALL
重启 nscd
服务 NSCD 重新启动
连接国外网络的软件
none初始设置.
连接国外网络的软件
- 初始设置
- none和ssh-ldap-pubkey(在 LDAP 客户端上)
- 强制认证
- 使用 SSL/TLS 确保 LDAP 安全
连接国外网络的软件
在最近的 Ubuntu 版本中,OpenLDAP 的默认安装使用了新的运行时配置(RTC)系统或 olc(OpenLDAP 配置)。 此安装使用cn=config(LDAP 数据库)进行配置,而不是使用旧式的slapd.conf.
连接国外网络的软件
模式可动态导入到cn=config数据库,而无需重启猛击none/etc/ldap/schema.
随后的章节将使用并讨论以下ldif 格式的模式:
- none
- ldap_disable_bind_anon.ldif
- none
连接国外网络的软件
ldapadd -Y EXTERNAL -H ldapi:/// -f openssh-lpk.ldif
其中none是
dn: cn=openssh-lpk,cn=schema,cn=config objectClass: olcSchemaConfig cn: openssh-lpk olcAttributeTypes: ( 1.3.6.1.4.1.24552.500.1.1.1.13 NAME 'sshPublicKey' DESC 'MANDATORY: OpenSSH Public key' EQUALITY octetStringMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 ) olcObjectClasses: ( 1.3.6.1.4.1.24552.500.1.1.2.0 NAME 'ldapPublicKey' SUP top AUXILIARY DESC 'MANDATORY: OpenSSH LPK objectclass' MAY ( sshPublicKey \$ uid ) )
连接国外网络的软件
默认情况下,OpenLDAP 允许从任何客户端服务器进行匿名查询。 您可能希望启用身份验证,这样只有通过身份验证的客户端才能查询服务器:
ldapadd -Y EXTERNAL -H ldapi:/// -f ldap_disable_bind_anon.ldif
其中ldap_disable_bind_anon.ldif是
dn: cn=config changetype: modify add: olcDisallows olcDisallows: bind_anon dn: cn=config changetype: modify add: olcRequires olcRequires: authc dn: olcDatabase={-1}frontend,cn=config changetype: modify add: olcRequires olcRequires: authc
连接国外网络的软件
假设你有一个远程桌面,但只有 SSH 访问权限,你需要用图形用户界面连接到该桌面。 例如,你在家里有一台服务器,你在路由器上设置了端口转发,这样你就可以从办公室或学校通过 SSH 连接到家里的服务器,但你又不想向互联网暴露太多端口。 你可以设置 xrdp 服务器,通过 SSH 进行隧道连接。
在以下文本中,家庭服务器是 Fedora 20,客户笔记本电脑是 OS X Yosemite。
连接国外网络的软件
在主服务器上运行
# yum install xrdp # systemctl start xrdp.service # systemctl enable xrdp.service
连接国外网络的软件
none
# firewall-cmd --add-service=ssh --permanent # firewall-cmd --add-port=3389/tcp --permanent # firewall-cmd --reload
连接国外网络的软件
none
\$ ssh -qnN -L 3389:127.0.0.1:3389 1.1.1.1
连接国外网络的软件
连接国外网络的软件
在下列生产服务器上进行了以下设置和配置:
- mq-node1.example.com
- mq-node2.example.com
- mq-node3.example.com
连接国外网络的软件
# apt-get install rabbitmq-server
连接国外网络的软件
在每台服务器上,设置的首要任务是主机名和/etc/hosts用于 RabbitMQ (Erlang) 节点使用的内部 IP 地址。 使用此脚本 (set-hostname.sh) 命令来设置相应服务器的主机名:
none
然后,修改/etc/hosts使其看起来像这样(例如在 mq-node1.example.com 上):
127.0.1.1 mq-node1.example.com mq-node1 10.0.1.101 mq-node2 10.0.1.102 mq-node3
连接国外网络的软件
确保每台服务器上的 5672 端口(AMQP)和 45000 端口(我们稍后会用到)都已打开。
连接国外网络的软件
在每台服务器上执行以下操作:
编辑/etc/rabbitmq/rabbitmq-env.conf并添加以下内容(端口配置):
SERVER_START_ARGS="-kernel inet_dist_listen_min 45000 -kernel inet_dist_listen_max 45000";
编辑/etc/rabbitmq/rabbitmq.config并添加以下内容(群集配置):
[{rabbit,[{cluster_nodes,{['rabbit@mq-node1','rabbit@mq-node2','rabbit@mq-node3'],disc}}]}]。
编辑/var/lib/rabbitmq/.erlang.cookie并确保它们在每台服务器上都是一样的。
连接国外网络的软件
RabbitMQ 节点可能已处于运行状态。 要使新配置生效,我们必须重置和重启: 首先,我们重置并停止每个节点:
# rabbitmqctl stop_app; rabbitmqctl reset; rabbitmqctl stop
然后,依次启动每个节点。 记住,是依次启动,而不是同时启动:
# service rabbitmq start
连接国外网络的软件
有时,您可能希望使用网络浏览器从其他局域网客户端访问一台计算机上的某些文件,例如,PDF 文件目录或一些 MP4/MOV 视频,这些文件可以通过流媒体轻松传输。HTML5 视频.
为了方便起见,我们可以用以下命令设置一个 nginx 服务器Nginx 花式索引模块为 OS X 系统中一个或多个文件系统上的某些目录提供服务。
我们可以使用自制软件安装所需的所有软件,但需要在 forumla 上做一些改动。 以下设置在 OS X 10.10 上进行了测试。
首先,点击homebrew-nginx:
\$ brew tap homebrew/nginx
截至发稿时,该公式提供的 fancyindex-nginx-module 版本为 0.3.2,但我们需要 0.3.3,即允许按名称(默认)、修改时间对元素进行排序. 因此,我们需要编辑公式文件:
\$ brew edit fancyindex-nginx-module
或者使用文本编辑器打开公式文件:
\$ vim /usr/local/Library/Taps/homebrew/homebrew-nginx/Formula/fancyindex-nginx-module.rb
和变化进入.
然后,使用 Fancy Index 模块安装 nginx:
none
如果 brew 抱怨 SHA1 错误,则必须修改sha1的值,以便与错误输出中的实际 sha1 值相匹配。
下载FancyIndex 主题自/usr/local/etc/nginx/fancyindex:
\$ git clone /usr/local/etc/nginx/fancyindex
剩下的就是配置了。 假设您要为/path/to/movies和/another/path/to/pdfnone电影和pdf以指向这些位置。 编辑/usr/local/etc/nginx/nginx.conf并修改服务器陻http块:
服务器 { 倾听 8080; 服务器名称 none; 花式索引 关于; 花式索引精确尺寸 关闭; fancyindex_localtime 关于; fancyindex_header "/fancyindex/header.html";; 花式索引页脚 "/fancyindex/footer.html";; fancyindex_ignore "fancyindex";; 地点 /电影 { 别称 /path/to/movies/; } 地点 none { 别称 /another/path/to/pdf/; } 地点 /fancyindex/ { 别称 /usr/local/etc/nginx/fancyindex/; } }
上述配置只是最低配置。 您可以添加额外的配置(例如错误日志, error_page)。 请注意别称指令,尾部必须有斜线,如别称 /path/to/movies/.
启动 nginx:
\$ nginx
如果您对nginx.confnone
\$ nginx -s reload
您可以检查 8080 端口是否处于 LISTEN 状态:
\sudo netstat -anf inet -p tcp | grep LISTEN
最后,如果你想继续开启防火墙并信任nginx,请运行以下命令:
\$ brew install coreutils # 用于 greadlink 命令 \$ sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add \$(greadlink -f /usr/local/bin/nginx)
您可以从本地以及http://youripaddress:8080/movies和http://youripaddress:8080/pdf通过局域网客户机上的浏览器进行操作。