分类归档: Network

我真是万万也没有想到 居然是支付宝的锅

很长一段时间以来,我的chrome打开网页就经常出现err_network_changed。一直我也没找到到底什么原因,我也以为是之前用什么SwitchyOmega、Lantern之类的代理导致的问题,墙都不翻了,真是万万也没有想到。。。

解决办法:

sudo launchctl remove com.alipay.DispatcherService

参考资料:
https://github.com/FelisCatus/SwitchyOmega/issues/918

Read: 2223

不改路由表实现智能选择线路,提升访问国内外网站速度

互联网发明以后,我们可以很容易的去访问世界各地的知识资源。但是受限于网络环境的原因,部分资源我们去访问的时候会很慢,或者访问不了,这时候我们可以通过跳板、隧道、虚拟私有网络等形式去进行访问。在使用虚拟私有网络的过程中,大部分软件会通过修改网关地址将所有数据都通过虚拟私有网络进行传递,然而我们很多时候访问某些特定资源,比如本地资源时并不希望数据通过虚拟私有网络,这怎么办呢?

池建强大哥在这篇博文《VPN – 长城内外,惟余莽莽》里提到了用路由表解决这个问题。可是改路由表这么麻烦的事情,想想都觉得不美。

博主之前一直用的是国外VPS+ssh tunnel方式“连接国外主机”,用proxy-switchysharp自动切换出口,非常方便。

现在博主的VPS搬到国内了,功能没有了,买了个虚拟私有网络。为了继续使用proxy-switchysharp,博主用go写了个简单的本地代理服务器,让请求通过指定的IP地址转发出去从而实现跨地区资源访问的目的,而因为虚拟私有网络关闭了“Send all traffic over VPN connection”,国内资源的访问依然快速。

目前项目托管在github,博主水平很差,欢迎各位改进
项目地址:https://github.com/HessianZ/daisy-proxy

可执行文件下载:
DaisyProxy For Mac
DaisyProxy For Windows 64

Read: 1834

用goproxy实现基于VPN的本地HTTP代理

我最近用VPN的时候觉得有些地方不太好用,比如说用HTTP代理的时候可以用Chrome的proxy-switchysharp插件做自动切换,这样访问国内资源时和访问国外资源时都很快。因此我用goproxy写了几行代码做了个可以指定本地出口IP的http proxy,连VPN时去掉“Send all traffic over VPN connection“选项,然后用proxy-switchysharp自动切换出口。

不过现在程序还有一些问题,我尝试去访问facebook和twitter都失败了,不知道为什么,同样是https,google和stackoverflow都是正常的,求高手指点。

#########

好了,我知道为什么脸书和推推不能访问了,因为DNS墙了。。。解析出来的地址就不对。

不知道有没有办法在go里面指定ResolveTCPAddr的dns服务器,我现在只能在hosts里面加上正确的IP地址来访问。

#########

代码如下:

package main

import (
    "github.com/elazarl/goproxy"
    "log"
    "net"
    "flag"
    "net/http"
)

var (
    listen = flag.String("listen", "localhost:8080", "listen on address")
    ip = flag.String("ip", "", "listen on address")
    verbose = flag.Bool("verbose", false, "verbose output")
)

func main() {
    flag.Parse()

    if *ip == "" {
        log.Fatal("IP address must be speicified")
    }

    proxy := goproxy.NewProxyHttpServer()
    proxy.Verbose = *verbose
    proxy.Tr.Dial = func (network, addr string) (c net.Conn, err error) {
        if network == "tcp" {
            localAddr, err := net.ResolveTCPAddr(network, *ip + ":0");
            if err != nil {
                return nil, err;
            }
            remoteAddr, err := net.ResolveTCPAddr(network, addr);
            if err != nil {
                return nil, err;
            }
            return net.DialTCP(network, localAddr, remoteAddr);
        }

        return net.Dial(network, addr);
    }
    log.Fatal(http.ListenAndServe(*listen, proxy))
}

使用方法

go run proxy.go -ip VPN虚拟网卡的IP地址

启动代理之后就可以像普通http代理一样在浏览器中使用他咯,非常方便。

 

另外看到一个也是基于goproxy的项目功能也挺有意思,主要是为开发者解决切换开发、生产环境麻烦的问题。有时间的话想整合一下这些功能,但是好像作者已经不更新了,而且是发布在bitbucket的。。。

http://rongmayisheng.com/post/goproxy-灵活的反向代理和静态资源代理

Read: 6863

CentOS + Cacti 集中监控服务器 (笔记)

Cacti官方网站

官方文档——Installing Under Unix

Percona Monitoring Plugins (Plugins for Cacti)
Percona 为我们提供了很多包括linux,apache,mysql,redis,nginx等等常见服务的监控模板非常方便。
下载地址 | 官方文档

监控机配置
1. 下载Cacti
2. 解压到wwwroot目录(cacti默认URL是/cacti,不想改配置就同样解压到www/cacti好了)
3. 配置web服务(注意屏蔽cli目录访问)
4. 编译安装PHP SNMP扩展
5. 安装SNMP服务

yum install net-snmp net-snmp-libs net-snmp-utils

如何安装PHP SNMP扩展
进入PHP源代码目录下的ext/snmp目录,执行以下命令

phpize
./configure
make && make install

6. 修改cacti/include/config.php 配置mysql连接参数
7. 导入cacti.sql
8. 访问http://服务器地址/cati 开始安装

被监控机配置
1. 配置防火墙(打开UDP 161端口,其他端口根据需要打开)
对于运行在网络上的服务器来说对外开发的端口自然是越少越好,可能的话最好只对内部网络开放SNMP服务。
其他端口根据需要选择开放。
在/etc/sysconfig/iptables添加

-A INPUT -p udp -m state --state NEW -m udp -s 允许访问的IP --dport 161 -j ACCEPT

2. 安装SNMP服务

yum install net-snmp net-snmp-libs net-snmp-utils
service snmpd start

其他注意事项:
1. Percona的提供的脚本很多监控项目是通过ssh连接到远程服务器上,所以需要监控机有访问被监控机的权限,在Percona的脚本里是通过ssh密钥登陆的。
2. Percona默认访问的Nginx统计地址是/server-status,可以在cacti的data source里改或者偷懒直接改scripts/ss_get_by_ssh.php。
3. Percona为每种服务都提供了Host模板,在创建Host之后可以通过多次更改Host Template来合并不同的图表模板。当然,还是都分开比较好一点,都在一起太多了,乱。

待续。。。

Read: 1243

CentOS 6.4 openvpn服务器搭建笔记

OpenVPN 源代码、安装包下载地址

官方安装手册

官方easy-rsa3 github

1. 安装openvpn、easy-rsa
yum install openvpn easy-rsa

easy-rsa是生成秘钥用的一系列脚本集合。openvpn2.3版之后程序包里不再捆绑,需要单独安装,官方2.3版本的easy-rsa3改动比较
大,网上也很少有用easy-rsa3的文章,为了避免麻烦,直接装源里的easy-rsa就好了。

easy-rsa默认安装在/usr/share/easy-rsa/2.0/,为了方便我复制了一份到/etc/openvpn下面

cp -R /usr/share/easy-rsa/2.0 /etc/openvpn/easyrsa

2. 生成证书、秘钥

. ./vars
./build-key-server server
./build-key client

3. 配置openvpn

4. 配置iptables
#开启路由转发
echo 1 > /proc/sys/net/ipv4/ip_forward
# 使用NAT 让vpn客户端可以通过vpn服务器的私网IP 192.168.1.101 访问服务端私网内其他机器
-A POSTROUTING -s 10.8.0.0/24 -j SNAT –to-source 192.168.1.101

配置路由表
route add -net 192.168.1.0/24 dev eth1
route add -net default gw 192.168.1.1
etc. 使用 用户名/密码 验证的方法

参考文章:
《OpenVPN服务器配置》

《配置OpenVPN使用User/Pass方式验证登录》

《Iptables之FORWARD转发链》

《OpenVPN 2.0 HOWTO-局域网互访(翻译)》

《OpenVPN服务端架设配置说明》 (图文手册,简单明了)

Read: 282