linux系统dig和nslookup的安装3+
nslookup是常用来查询本机域名解析情况的命令,但是一些linux系统下默认无此命令。我们可以通过安装一个包来使该命令生效,这个包中也包括dig命令。
Ubuntu:
# sudo apt-get install dnsutils
Debian:
# apt-get update
# apt-get install dnsutils
Fedora / Centos:
# yum install bind-utils
nslookup是常用来查询本机域名解析情况的命令,但是一些linux系统下默认无此命令。我们可以通过安装一个包来使该命令生效,这个包中也包括dig命令。
Ubuntu:
# sudo apt-get install dnsutils
Debian:
# apt-get update
# apt-get install dnsutils
Fedora / Centos:
# yum install bind-utils
我们在抓取网站内容的时候,经常遇到稀奇古怪的防盗链,比如上次碰到一个站的图片地址是假的,访问后要301跳转一次才到真正的图片路径,这个真实的路径又做了防盗措施,判断referer是不是上个假的图片地址。用curl试了几次,终于整出一个函数,效果不错。
$curl_loops = 0;//避免死了循环必备 $curl_max_loops = 3; function curl_get_file_contents($url, $referer='') { global $curl_loops, $curl_max_loops; $useragent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"; if ($curl_loops++ >= $curl_max_loops) { $curl_loops = 0; return false; } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url);?curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_USERAGENT, $useragent); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_REFERER, $referer); $data = curl_exec($ch); $ret = $data; list($header, $data) = explode("\r\n\r\n", $data, 2); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); $last_url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); curl_close($ch); if ($http_code == 301 || $http_code == 302) { $matches = array(); preg_match('/Location:(.*?)\n/', $header, $matches); $url = @parse_url(trim(array_pop($matches))); if (!$url) { ?$curl_loops = 0; ?return $data; } $new_url = $url['scheme'] . '://' . $url['host'] . $url['path'] . (isset($url['query']) ? '?' . $url['query'] : ''); $new_url = stripslashes($new_url); return curl_get_file_contents($new_url, $last_url); } else { $curl_loops = 0; list($header, $data) = explode("\r\n\r\n", $ret, 2); return $data; } } |
刚在国外买了台服务器,第一个念头就是终于可是翻墙了,于是着手建立一个vpn服务器。OpenVPN在windows上还要客户端,不采用。L2TP/IPSec方式的太复杂,也不用。所以就选择PPTP方式,因为现在windows和Mac系统中都内建了相应的客户端。下面是我的安装日记。
服务器环境:Ubuntu 9.04 单网卡
呵呵,先sudo bash吧,虽然不安全,可是谨慎些,运行命令方便
首先安装pptp server
apt-get install pptpd
成功后配置conf文件
vi /etc/pptpd.conf
释放文件末端的 localip 和 remoteip 两个参数的注释,然后修改。这里,localip 是 VPN 链接成功后服务器的 ip 地址, remoteip 则客户端的可分配 ip 地址范围。下面是我的配置:
# (Recommended)
localip 10.100.0.1
remoteip 10.100.0.2-10
# or
#localip 192.168.0.234-238,192.168.0.245
#localip 192.168.0.234-238,192.168.0.245
#remoteip 192.168.1.234-238,192.168.1.245
然后要编辑/etc/ppp/pptpd-options文件,为vpn指定dsn服务器, 哈哈,我们使用Google Public DNS:
vi /etc/ppp/pptpd-options
修改
ms-dns 8.8.8.8
ms-dns 8.8.4.4
保存后,接下来配置用户名和密码了。修改/etc/ppp/chap-secrets文件,根据你的情况填写即可。具体解释如下:
第一列是用户名,第二列是服务器名(默认写pptpd 即可,注意与 pptpd-options 文件保持一致),第三列是密码,第四列是 IP 限制(不做限制用 * )。
最后重启pptpd服务,就可以生效了。
目前位置,我们只完成了一部分,因为这样只能访问服务器资源,其余内外网内容都无法访问。我们继续操作:
修改/etc/sysctl.conf,把ipv4 forward开启,方法是去掉
net.ipv4.ip_forward=1前面的注释,然后保存,运行sysctl –p.
root@duyipeng:~# sysctl -p
net.ipv4.ip_forward = 1
这样,我们的vpn server就算是搭建成功了。
如果依然不能访问外网,请使用iptables建立一个NAT, 方法如下:
apt-get intall iptables
iptables -t nat -A POSTROUTING -s 10.100.0.0/24 -o eth0 -j MASQUERADE
上面的24表示子网掩码,代表24个1.
如果要防止重启服务器后iptables丢失,先运行
iptables-save > /etc/iptables-rules
然后修改/etc/network/interfaces 文件,在eth0 下面加入
pre-up iptables-restore < /etc/iptables-rules
这样,服务器重启后,就能自动挂载规则了。
如此,应该可以解决问题。如果还是无法成功,你就改检查你的路由和防火墙了。Good Luck!