我对网桥的理解是有一种“虚拟交换机”,它虚拟地连接网络设备(已添加到网桥),就好像我会用电缆将它们连接到真正的交换机……但一定有问题这种类比,由于某种原因,我需要在桥接设备上设置我的 IP 地址。
例如,让我们进行以下设置:我有一台机器充当多个虚拟机的主机(拥有自己的虚拟网络设备 vnet0、vnet1、vnet2……)。这台机器有一个物理网络接口 eth0,我想用于所有虚拟机和我的主机与外界进行通信。
由于我的主机应该有一个 IP 地址,因此我认为我应该在 eth0 上配置这个 IP(inkl。默认网关,DNS 服务器,...)。然后我会创建一个网桥 br0 并将所有接口(eth0、vnet0、vnet1、vnet2、..)添加到该网桥。这不起作用...
相反,我需要将网桥 br0 配置为具有我主机的 IP 地址(并且还配置了默认网关和 DNS 服务器),然后将所有接口(eth0、vnet0、vnet2...)添加到网桥 br0 .
嗯,......这有效。但我实际上想知道为什么在 eth0 上定义 IP 不起作用。我似乎缺少一些关于这实际上是如何工作的基本知识。因此,如果有人可以向我解释这有什么问题,我会很高兴。我通常想真正了解这些东西是如何工作的。因此,如果您要详细了解协议,我会很高兴。
在系统管理员的生活中,总会有需要定义 IP 子网的时刻。无论是您的小型家庭 LAN 还是无尽的公司 WAN,其中疯狂潜伏在未知路由的深处,IP 地址总是需要被选择、划分并分配给某些设备,无论是否值得。而且,虽然在公共互联网的“现实世界”中,您只需要服从 ISP 的命令,但当涉及到您自己的专用网络时,您可以自由选择自己的道路和最终命运。
众所周知(或应该知道),强大的 RFC 1918 指出私有网络 IP 地址只能分为三大块:
192.168.0.0/16
172.16.0.0/12
10.0.0.0/8
Run Code Online (Sandbox Code Playgroud)
你最喜欢哪一个?
无论您真正需要连接多少设备,您通常选择多大的子网?
你认为它应该保持在最低限度,还是应该尽可能的伟大和辉煌?
你相信“圆形”子网(/8、/16、/24)的规律和秩序,还是更喜欢“非圆形”子网的无政府状态和爬行混乱?
你是否遵循我们门户的神圣学校应该是 0.1,不应该是 0.254 的邪恶圣殿,还是它应该以我们希望它结束的任何东西结束的秩序的亵渎教义?
你心里是否觉得Server应该有“低”地址而Client应该使用“高”地址?或者只有 Fate 会定义如何调用服务器和客户端?
您是否总是在您管理的所有子网中使用(或尝试使用)相同的结束号码,以便您可以在您非常需要的时候找到您的网关和您的 DNS?
您相信 DHCP 还是静态寻址?并且您是否相信他们的混合孩子,带有保留的 DHCP,即使对于网络打印机这样的非客户端机器,或者所有的上帝都会原谅您,服务器?
"Take this and divide it; this is my 2^32 address space,
which shall be endlessly fragmented for all your addressing needs,
until IPv6 may finally come."
Run Code Online (Sandbox Code Playgroud) 我正在尝试通过 Windows 防火墙为一组机器提供服务。我想将我的家用机器添加到防火墙,但我的家用机器有一个动态 IP 地址。我使用 dyndns 以便我有一个可以随时连接的主机名。所以我想看看是否有一种方法可以使用我的主机名而不是 IP。
谢谢
更新
让我补充一点信息,也许还有其他方法可以解决我的问题。服务器是由 RackSpace 托管的 Web 服务器。我只想允许从我的工作(静态 IP,所以没问题)和家庭(动态)访问 RDP。我的家庭 IP 不会经常更改,只是经常让我烦恼。所以也许有更好的方法来做到这一点......也许是VPN?
我已经在两台 Debian 机器上设置了 keepalived 以实现高可用性,但是我遇到了可以分配给我的vrrp_instance. 我将如何配置和故障超过 20 个虚拟 IP?
这是非常简单的设置:
LB01: 10.200.85.1
LB02: 10.200.85.2
Virtual IPs: 10.200.85.100 - 10.200.85.200
Run Code Online (Sandbox Code Playgroud)
每台机器还在虚拟 IP 上运行 Apache(后来的 Nginx)绑定,用于 SSL 客户端证书终止和代理到后端网络服务器。我需要这么多 VIP 的原因是无法在 HTTPS 上使用 VirtualHost。
这是我的 keepalived.conf:
vrrp_script chk_apache2 {
script "killall -0 apache2"
interval 2
weight 2
}
vrrp_instance VI_1 {
interface eth0
state MASTER
virtual_router_id 51
priority 101
virtual_ipaddress {
10.200.85.100
.
. all the way to
.
10.200.85.200
}
Run Code Online (Sandbox Code Playgroud)
BACKUP 机器上有一个相同的配置,它工作正常,但只能达到第 20 个 IP。
我找到了一个HOWTO讨论这个问题。基本上,他们建议只有一个 VIP 并“通过”这个 …
我刚刚注册了 DreamHost VPS,他们的注册过程提供了一个唯一的 IP 地址,每月额外支付约 4 美元。
我知道什么是 IP 地址。为什么这种独特性很重要?无论如何,访问者都是通过 URL 地址访问我的网站。
下面更新:下面更新 2:最终解决方案
我有一台全新的 HP EliteBook 笔记本电脑 8560p,运行 Windows 7 64 位。我把它插到一个小的Dlink di-604路由器上,它目前配置了DHCP,得到的IP地址是192.168.1.100,路由器的IP地址是192.168.1.6。我插入第二个笔记本,它的 IP 地址为 192.168.1.101。这就是插入的全部内容,并且路由器未连接到 WAN。如果我继续使用第二个笔记本 (.101) 并 ping 第一个 (.100),它没有响应。如果我尝试 ping 192.168.1.2(一个不存在的 IP 地址),我会收到一个响应,并且我在 arp 缓存中注意到第一台机器的 MAC 地址为 ip 192.168.1.2 和 192.168.1.100 列出。第一台机器上没有定义 192.168.1.2,也从来没有,这是一个直接开箱即用的笔记本。ipconfig /all 响应 192.168.1.100 和 192.168.1。
我尝试将第一台机器设置为静态地址 192.168.1.150。同样的结果,无法 ping .150 但响应 ping .2。, .2 和 .150 出现在 .101 的 arp 缓存中,具有相同的 MAC 地址。
一些观察结果:当响应 .2 上的 ping 时,它不是始终低于 1 毫秒或更少,它通常是一个相当高的范围数,从 4 毫秒到 30 毫秒不等,考虑到两者都连接到同一个交换机,这真的很奇怪。
我尝试了多个路由器、dlink、sonicwall 和另一个 dlink。全部结果相同
如果我对整个局域网使用不同的子网,比如 192.168.0.x 而不是 192.168.1.x,那么它的工作和响应都没有问题。
有谁见过这样的事情吗?
更新:我对这个神秘的 IP 地址 192.168.1.2 …
我的 nginx 在端口 81 上运行。我可以使用 telnet telnet 127.0.0.1 81,一切都很好。
但是当我尝试从我的 Mac(一个外部 IP 地址)telnet 到我的机器时,我只是收到这个错误:
telnet: connect to address 109.123.x.x: Connection refused
telnet: Unable to connect to remote host
Run Code Online (Sandbox Code Playgroud)
这是我的 /etc/nginx/sites-available/default 文件:
server {
listen 81; ## listen for ipv4; this line is default and implied
#listen [::]:80 default ipv6only=on; ## listen for ipv6
root /usr/share/nginx/www;
index index.html index.htm;
# Make site accessible from http://localhost/
server_name 109.123.x.x;
location / {
# First attempt to serve request as file, then
# …Run Code Online (Sandbox Code Playgroud) 我的 macbook pro 上有两个网络设备:
我有 4 个需要在 LAN 上访问的 IP 地址:
剩下的流量需要走WIFI。我曾尝试为特定的 ip 地址设置路由表,但我只是设法弄乱了我的网络。我不经常冒险进入网络世界,但这是我一直在尝试的最新命令:
sudo route add -host 192.168.2.30 -interface en0
这个命令扼杀了我使用 ping 的能力。它告诉我 ping 无法分配内存(甚至可能)?它也杀死了我的 wifi 访问。注销并重新登录解决了该问题。我真的不介意将此解决方案永久化,因此我可以使用临时路由。
编辑:
如果我目前一直在尝试:
sudo route flush
sudo route add default 192.168.19.1
Run Code Online (Sandbox Code Playgroud)
这让一切工作大约一分钟。但是在这一分钟之后,它“忘记”了到 WiFi 的路由,同时保留了 LAN 的 (en0) 路由。如果我拔下并重新插入 LAN (en0) 电缆,该过程将再运行一分钟。
编辑2:
这些是 d34dh0r53 作为请求输入的一些命令。
$ netstat -rn
Routing tables
Internet:
Destination Gateway …Run Code Online (Sandbox Code Playgroud) 有时我想从我的 Apache 日志文件中 grep CIDR 范围。这对于落在自然边界(/8、/16 和 /24)上的范围很容易,但对于其他范围(例如 /17 和 /25)就不是那么容易了。
例子:
# 192.168.0.0/16: (easy)
grep " 192\.168\." access_log
# 192.168.128.0/17: (more thought required)
grep -E " 192\.168\.(12[89]|1[3-9][0-9]|2[0-5][0-9])\." access_log
# 192.168.0.0/17: (more thought required)
grep -E " 192\.168\.([0-9]|[0-9][0-9]|1[01][0-9]|12[0-7])\." access_log
# 192.168.128.0/18: (straining my brain)
grep -E " 192\.168\.(1[2-8][0-9]|19[01])\." access_log
Run Code Online (Sandbox Code Playgroud)
这些正则表达式会忽略包含前导零的 IP 地址,例如192.168.001.001,这在 Apache 日志文件中不是问题,但可能在其他日志文件中。打印机似乎特别喜欢前导零。将可选的零添加到正则表达式很容易,但它只会使整个事情变得更加困难。必须有更简单的方法。
有没有一种简单的方法可以从匹配任何 CIDR 范围的文件中选择行?
花式正则表达式扩展将被视为不同的工具(例如awk或perl在必要时,但我希望它是单行的),如果它们使工作更容易。理想情况下,我想要的是
grep "[:CIDR 192.168.128.0/18:]" access_log
Run Code Online (Sandbox Code Playgroud)
将 CIDR 范围转换为适当的正则表达式的工具也可以。
$ cidr2regex 192.168.0.0/18
192\.168\.(1[2-8][0-9]|19[01])\.[0-9]{1,3}
Run Code Online (Sandbox Code Playgroud)
或者
$ grep -E "$(cidr2regex …Run Code Online (Sandbox Code Playgroud) 是否可以根据源IP为不同的虚拟主机配置 Apache ?(即相同的接口,相同的主机名,但两个不同的虚拟主机,具有不同的内容,基于源IP。)
这样做的动机是我的 IP 地址可以正确访问该站点,但其他人都可以访问保留页面。传统的解决方案似乎是使用 mod_rewrite 将访问者引导到同一 docroot 中的单独页面,但我想为保留页面使用完全不同的 docroot。
ip ×10
networking ×3
ip-address ×2
linux ×2
routing ×2
amt ×1
apache-2.2 ×1
arp ×1
bridge ×1
cidr ×1
grep ×1
hosting ×1
keepalived ×1
mac-osx ×1
nginx ×1
regex ×1
subnet ×1
virtualhost ×1
vps ×1
windows-7 ×1