在 master->backup 模式下,一旦主库宕掉, 虚拟IP会自动漂移到从库,当主库修复后,keepalived启动后,还会把虚拟IP抢过来,即使你设置nopreempt(不抢占)的方式抢占IP的动作也会发生
在 backup->backup 模式下,关闭 VIP抢占模式,当主库宕掉后虚拟IP会自动漂移到从库上,当原主恢复之后重启keepalived服务,并不会抢占新主的虚拟IP, 即使是优先级高于从库的优先级别,也不会抢占 IP
继续阅读 »
本文源自对文章Layman’s understanding of Networking & UDP/TCP/IP(点击进入原文)的翻译。
本文,我将以一个门外汉的角度来解释电脑网络工作的原理,特别是TCP/IP这个用于因特网的协议。这里将涵括因特网编址、域名、以及端口等内容。希望通过阅读此文,你可以更好的理解电脑间的信息传输。在第(1)节,主要讨论计算机网络的基础。第(2)节主要讨论域名,而在第(3)节讨论端口。
继续阅读 »
现在网络时代,几乎任何事情都可以在网络上做到。
当然,现在很多喷子。身为嘴强王者的我自然也会稍微有点儿喷,但是我绝绝对对不打字喷人。
为什么呢?因为要查水表实在是太简单了。
function getIP()
{
if (getenv("HTTP_CLIENT_IP")) {
$ip=getenv("HTTP_CLIENT_IP");
}elseif (getenv("HTTP_X_FORWARDED_FOR")) {
$ip=getenv("HTTP_X_FORWARDED_FOR");
}elseif (getenv("REMOTE_ADDR")) {
继续阅读 »
Nginx得到反向代理前的真实IP
Java Servlet可以通过request.getRemoteAddr()得到请求的客户端的IP
现在一般情况下都不是直接用Tomcat或者Jetty这样的web容器,都会在前面加上Nginx或者Tengine之类的静态Web容器来反向代理。
由于经过了Nginx转发请求,通过request.getRemoteAddr()得到的IP就成了127.0.0.1
可以在Nginx配置里加上
proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
这个意思是在nginx做反向代理的时候把代理前的地址放到http hea
继续阅读 »
本文源自对文章Layman’s understanding of Networking & UDP/TCP/IP(点击进入原文)的翻译。
域名是什么
我希望我上面的解释是比较清楚的。只是上面我没有提到或者说没有强调地址,因为我觉得这显而易见,当我们发一封邮件时,知道收信人的姓名及地址信息是必须的。
因为计算机网络的作用就像邮局一样,所有的数据报必须有一个地址(在UDP中)。在TCP中,你需要一个地址去建立连接。在计算机中,所有的地址几乎都是数字的组合。然而我们人类更喜欢名字。因此,这儿明显有冲突。所以接下来就会介绍域名系统(DNS)。
继续阅读 »
《TCP/IP详解卷一》读书笔记
第一章 概述
1.2 分层
TCP/IP 通常被认为是一个四层协议系统:
链路层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡
网络层,包括 IP 协议 , ICMP 协议 , IGMP 协议
运输层,包括 TCP , UDP . TCP 为两台主机提供高可靠性的数据通信,包含把应用层交给她的数据分成合适的小块交给网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。 UDP 则为应用层提供非常简单的服务,他只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能达到另一端。
应用层负责处理特定的应用程序细节。基本都包含以下应用:
Telnet 远程登录
F
继续阅读 »
不知有多少人了解IP地址127.0.0.1 一定程度上是完全等价于127.1 和0x7f.1 的,不过我从上回看到ping 127.1 能正常工作开始,就一直很好奇背后的原因,最近又在 一个CTF题目 用到基于IP表示法的技巧,于是决定稍微探索一下。
我发现一个IPv4地址可能拥有上百个不同的表示形式,而由于一些历史原因,在这方面的标准尚未完全统一,因此这些形式在大部分情况下都是可被正常解析的(举个例子,URL http://000000300.0x000000000a8.00102.00000000351 会解析成http://192.168.66.233/ ),这就在绕过限制和其他一些安全问题上提供了想象的空间。
本文主要介
继续阅读 »
开发中常需要获取机器的mac地址或者ip,本文通过go获取机器上所有mac地址和ip,详细代码如下:
```go
package main
import (
"fmt"
"net"
)
func getMacAddrs() (macAddrs []string) {
netInterfaces, err := net.Interfaces()
if err != nil {
fmt.Printf("fail to get net interfaces: %v", err)
return macAddrs
}
继续阅读 »
从限流谈到伪造 IP(nginx remote_addr)
remote_addr
很多流量大的网站会限流,比如一秒 1000 次访问即视为非法,会阻止 10 分钟的访问。
通常简单的做法,就是通过 nginx 时,nginx 设置
继续阅读 »
什么是VIP?
VIP即Virtual IP Address,是实现HA(高可用)系统的一种方案,高可用的目的是通过技术手段避免因为系统出现故障而导致停止对外服务,一般实现方式是部署备用服务器,在主服务器出现故障时接管业务。 VIP用于向客户端提供一个固定的“虚拟”访问地址,以避免后端服务器发生切换时对客户端的影响。
继续阅读 »