如何避免Xen VPS用户自己修改IP地址

如何避免Xen VPS用户自己修改IP地址

作为 Xen VPS 服务商,我们分配独立的 IP 地址给 VPS,我们不希望 VPS 用户自己能随便修改 IP 地址,因为这样有可能和其他用户的 IP 地址造成冲突,而且造成管理上的不便,所以需要绑定 IP 给某个 VPS.

解决这个问题的办法有很多,从路由器、防火墙、操作系统、Xen 等层面都可以做限制。这里介绍的两个简单方法都是从 dom0 入手:一个是在 dom0 上利用 Xen 配置;一个是在 dom0 上利用 iptables.

利用 Xen 配置

Xen 上有个 antispoof 配置选项就是来解决这个问题的,不过默认配置没有打开这个 antispoof 选项,需要修改:

# vi /etc/xen/xend-config.sxp

...

(network-script ‘network-bridge antispoof=yes‘)

...

修改 /etc/xen/scripts/vif-common.sh 里面的 frob_iptable() 函数部分,加上 iptables 一行:

# vi /etc/xen/scripts/vif-common.sh

function frob_iptable()

{

...

iptables -t raw "$c" PREROUTING -m physdev --physdev-in "$vif" "[email protected]" -j NOTRACK

}

修改完 Xen 配置后还需要修改 domU 的配置,给每个 domU 分配固定 IP 和 MAC 地址,还有 vif 名字:

# vi /etc/xen/vm01

...

vif = [ "vifname=vm01,mac=00:16:3e:7c:1f:6e,ip=172.16.39.105,bridge=xenbr0" ]

...

很多系统上 iptables 在默认情况下都不会理会网桥上的 FORWARD 链,所以需要修改内核参数确保 bridge-nf-call-iptables=1,把这个修改可以放到 antispoofing() 函数里,这样每次 Xen 配置网络的时候会自动配置内核参数:

# vi /etc/xen/scripts/network-bridge

antispoofing () {

echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables

...

}

修改完毕后测试的话需要关闭 domU,重启 iptables 和 xend 服务,再启动 domU.

# xm shutdown vm01

# /etc/init.d/iptables restart

# /etc/init.d/xend restart

# xm create vm01

上面的方法在 Xen 3.x 上 测试有效,有人说在 Xen 4.x 上行不通,我们下面将要介绍的方法绕开了 Xen 配置,直接从 iptables 限制,在 Xen 3.x 和 Xen 4.x 上应该都可以用。

利用 iptables

首先在 dom0 上确定 iptables 已经开启,这里需要注意的是一定要在每个 domU 的配置文件中的 vif 部分加上 vifname, ip, mac,这样才能在 iptables 规则里面明确定义:

# /etc/init.d/iptables restart

# vi /etc/xen/vm01

...

vif = [ "vifname=vm01,mac=00:16:3e:7c:1f:6e,ip=172.16.39.105,bridge=xenbr0" ]

...

# vi /etc/iptables-rules

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

# The antispoofing rules for domUs

-A FORWARD -m state --state RELATED,ESTABLISHED -m physdev --physdev-out vm01 -j ACCEPT

-A FORWARD -p udp -m physdev --physdev-in vm01 -m udp --sport 68 --dport 67 -j ACCEPT

-A FORWARD -s 172.16.39.105/32 -m physdev --physdev-in vm01 -j ACCEPT

-A FORWARD -d 172.16.39.105/32 -m physdev --physdev-out vm01 -j ACCEPT

# If the IP address is not allowed on that vif, log and drop it.

-A FORWARD -m limit --limit 15/min -j LOG --log-prefix "Dropped by firewall: " --log-level 7

-A FORWARD -j DROP

# The access rules for dom0

-A INPUT -j ACCEPT

COMMIT

# iptables-restore < /etc/iptables.rules

当然,别忘了:

# echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables   交流QQ:2881064157

时间: 2024-07-30 23:44:49

如何避免Xen VPS用户自己修改IP地址的相关文章

Linux系统下修改IP地址、网关、DNS的基本方法

临时修改IP地址.网关.主机名.DNS,马上生效,无需重启(重启后失效) 1.修改主机名 #hostname Slyar 2.修改IP地址(eth0为网卡名称) #ifconfig eth0 192.168.1.5 netmask 255.255.255.0 3.修改默认网关(eth0为网卡名称) #route add default gw 192.168.1.1 dev eth0 4.修改DNS #vim /etc/resolv.conf CentOS(RedHat)命令行永久修改IP地址.网

CentOS系统使用配置文件修改IP地址详细教程

在VM虚拟机安装的centos系统,默认使用的是dhcp自动获取ip地址的方式,而我自己想用这个centos在局域网内搭建一个小型演示站点,这个自动获取ip地址的方式就明显不好了,那么centos如何修改ip地址呢. 作者服务器也用的是centos,都是租用空间商的人家都直接设置好,而本地以前一直用的是Windows很少用到centos忽然间发现自己centos不会修改ip地址了.百度谷歌搜索一大堆总算是解决了,本文这里就详细的说明一下及centos网络配置也一起详细讲解一下,希望可帮助正需要这

python操作linux关机、重启和修改ip地址

生产环境中,需求为关机,重启和修改ip地址,用Python脚本实现. #coding = utf8 ''' Created on 2016-7-4 @desc: change the network of system and reboot,shutdown ;suit for ubuntu and centos @attention: if ubuntu, need root or sudo without password ;and before use this script ,     

Linux 修改 IP地址 和 网关

修改IP地址和网关是很常见的操作,在做相关实验的时候,如果没有设置好,会带来很多不必要的麻烦.. 1. 修改IP地址vi /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0BOOTPROTO=noneBROADCAST=192.168.1.255IPADDR=192.168.1.33NETMASK=255.255.255.0NETWORK=192.168.1.0ONBOOT=yesUSERCTL=noPEERDNS=noTYPE=Ethern

ubuntu 修改IP地址

ubuntu修改ip地址笔记 修改ip地址方法: sudo vim /etc/network/interfaces, auto eth0 iface eth0 inet static address ip地址 netmask  子网掩码 gateway  网关 broadcast 广播地址 dns-nameservers DNS 记得重启网络服务:/etc/init.d/networking restart,

openstack虚拟机修改IP地址

1).查找虚拟机的网络端口 mysql> use neutron; mysql> select * from ports where device_id="3ab73261-82ce-4b9a-9a1c-519624e19dc2"; +----------------------------------+--------------------------------------+------+--------------------------------------+-

PHP获取用户的真实IP地址

本文出至:新太潮流网络博客 PHP获取用户的真实IP地址,非代理IP function getClientIP(){ global $ip; if(getenv("HTTP_CLIENT_IP")){ $ip = getenv("HTTP_CLIENT_IP"); }else if(getenv("HTTP_X_FORWARDED_FOR")){ $ip = getenv("HTTP_X_FORWARDED_FOR"); }e

CMD修改IP地址

在操作系统下,我们可以使用"本地连接"的属性来修改IP地址,但是如果我们要在多个IP地址之间切换,使用这种方法未免过于麻烦.我们可以使用NETSH命令来添加,相当简便.使用DOS修改IP地址方法如下: 一.使用netsh命令添加IP地址 比如我想在我的本地连接里添加一个IP,用netsh的例子就是: netsh int ip add address "本地连接" 192.168.0.100 255.255.255.0 cmd /k netsh interface i

Centos如何设置IP地址,LINUX怎么修改IP地址

Centos如何设置IP地址,LINUX怎么修改IP地址 1 2 3 4 5 6 7 分步阅读 百度经验:jingyan.baidu.com 对于很多刚刚接触linux的朋友来说,如何设置linux系统的IP地址,作为第一步,下面小编以centos系统为例,给大家演示如何给centos设置IP地址,如何修改linux 系统IP地址? 步骤阅读 百度经验:jingyan.baidu.com 工具/原料 linux系统,centos 百度经验:jingyan.baidu.com 查看IP地址 1 登