centos xen多网桥单位内配置实例,还在用

简介:

 [root@sgz data2]# cat /etc/xen/xend-config.sxp |grep -v "#"|grep -v "^$"

(logfile /var/log/xen/xend.log)
(loglevel DEBUG)
(xend-unix-server yes)
(xend-unix-path /var/lib/xend/xend-socket)
(xend-port            8000)
(xend-relocation-port 8002)
(xend-address '')
(xend-relocation-address '')
(xend-relocation-hosts-allow '')
(network-script 'network-bridge bridge=<name>')
(network-script 'network-bridge bridge=<name>')
(network-script two.sh)
(vif-script vif-bridge)
(dom0-min-mem 256)
(dom0-cpus 0)
(vnc-listen '0.0.0.0')
  
(vncpasswd '')
(keymap 'en-us')
[root@sgz data2]# cat /etc/xen/scripts/network-bridge |grep -v "#"|grep -v "^$"
dir=$(dirname "$0")
. "$dir/xen-script-common.sh"
. "$dir/xen-network-common.sh"
findCommand "$@"
evalVariables "$@"
vifnum=${vifnum:-$(ip route list | awk '/^default / { split($0, x, "dev "); split(x[2], x, " "); print x[1] }' | sed 's/^[^0-9]*//')}
vifnum=${vifnum:-0}
bridge=${bridge:-xenbr${vifnum}}
netdev=${netdev:-eth${vifnum}}
antispoof=${antispoof:-no}
pdev="p${netdev}"
vdev="veth${vifnum}"
vif0="vif0.${vifnum}"
addr_pfx=
get_ip_info() {
    addr_pfx=`ip addr show dev $1 | sed -n 's/^ *inet \(.*\) [^ ]*$/\1/p'`
    gateway=`ip route show dev $1 | fgrep default | sed 's/default via //'`
}
    
is_bonding() {
    [ -f "/sys/class/net/$1/bonding/slaves" ]
}
is_vlan() {
    [ -f "/proc/net/vlan/$1" ]
}
is_ifup() {
    ip link show dev $1 | awk '{ exit $3 !~ /[<,]UP[,>]/ }'
}
do_ifup() {
    if ! ifup $1 || ! is_ifup $1 ; then
        if [ -n "${addr_pfx}" ] ; then
            ip addr flush $1
            ip addr add ${addr_pfx} dev $1
            ip link set dev $1 up
            [ ${gateway} ] && ip route add default via ${gateway}
        fi
    fi
}
transfer_addrs () {
    local src=$1
    local dst=$2
    if ip addr show dev ${dst} | egrep -q '^ *inet ' ; then
        return
    fi
    ip addr show dev ${src} | egrep '^ *inet ' | sed -e "
s/inet/ip addr add/
s@\([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+/[0-9]\+\)@\1@
s/${src}/dev ${dst} label ${dst}/
s/secondary//
" | sh -e
    ip route list | sed -ne "
/dev ${dst}\( \|$\)/ {
  s/^/ip route del /
  p
}" | sh -e
}
transfer_routes () {
    local src=$1
    local dst=$2
    ip route list | sed -ne "
/dev ${src}\( \|$\)/ {
  h
  s/^/ip route del /
  P
  g
  s/${src}/${dst}/
  s/^/ip route add /
  P
  d
}" | sh -e
}
link_exists()
{
    if ip link show "$1" >/dev/null 2>/dev/null
    then
        return 0
    else
        return 1
    fi
}
antispoofing () {
    iptables -P FORWARD DROP
    iptables -F FORWARD
    iptables -A FORWARD -m physdev --physdev-in ${pdev} -j ACCEPT
    iptables -A FORWARD -m physdev --physdev-in ${vif0} -j ACCEPT
}
show_status () {
    local dev=$1
    local bridge=$2
    
    echo '============================================================'
    ip addr show ${dev}
    ip addr show ${bridge}
    echo ' '
    brctl show ${bridge}
    echo ' '
    ip route list
    echo ' '
    route -n
    echo '============================================================'
}
is_network_root () {
    [[ "$rootfs" =~ "^nfs" ]] || [[ "$rootopts" =~ "_netdev" ]] && return 0 || return 1
}
op_start () {
    if [ "${bridge}" = "null" ] ; then
return
    fi
    if is_network_root ; then
        [ -x /usr/bin/logger ] && /usr/bin/logger "network-bridge: bridging not supported on network root; not starting"
        return
    fi
    if ! link_exists "$vdev"; then
        if link_exists "$pdev"; then
            return
        else
            echo "
Link $vdev is missing.
This may be because you have reached the limit of the number of interfaces
that the loopback driver supports.  If the loopback driver is a module, you
may raise this limit by passing it as a parameter (nloopbacks=<N>); if the
driver is compiled statically into the kernel, then you may set the parameter
using loopback.nloopbacks=<N> on the domain 0 kernel command line.
" >&2
            exit 1
        fi
    fi
    if link_exists "$vdev"; then
mac=`ip link show ${netdev} | grep 'link\/ether' | sed -e 's/.*ether \(..:..:..:..:..:..\).*/\1/'`
preiftransfer ${netdev}
transfer_addrs ${netdev} ${vdev}
if is_bonding ${netdev} || is_vlan ${netdev} || ! ifdown ${netdev}; then
    get_ip_info ${netdev}
    ip link set ${netdev} down
    ip addr flush ${netdev}
fi
ip link set ${netdev} name ${pdev}
ip link set ${vdev} name ${netdev}
setup_bridge_port ${pdev}
setup_bridge_port ${vif0}
ip link set ${netdev} addr ${mac} arp on
if [ -e "/sys/class/net/${pdev}/mtu" ]; then
    ip link set ${netdev} mtu `cat /sys/class/net/${pdev}/mtu`
fi
ifup_and_wait ${pdev}
create_bridge ${bridge} ${pdev}
add_to_bridge ${bridge} ${vif0}
do_ifup ${netdev}
    else
create_bridge   ${bridge}
transfer_addrs  ${netdev} ${bridge}
transfer_routes ${netdev} ${bridge}
    fi
    if [ ${antispoof} = 'yes' ] ; then
antispoofing
    fi
}
op_stop () {
    if [ "${bridge}" = "null" ]; then
return
    fi
    if ! link_exists "$bridge"; then
return
    fi
    if link_exists "$pdev"; then
ip link set dev ${vif0} down
mac=`ip link show ${netdev} | grep 'link\/ether' | sed -e 's/.*ether \(..:..:..:..:..:..\).*/\1/'`
transfer_addrs ${netdev} ${pdev}
if ! ifdown ${netdev}; then
    get_ip_info ${netdev}
fi
ip link set ${netdev} down arp off
ip link set ${netdev} addr fe:ff:ff:ff:ff:ff
ip link set ${pdev} down
ip addr flush ${netdev}
ip link set ${pdev} addr ${mac} arp on
brctl delif ${bridge} ${pdev}
brctl delif ${bridge} ${vif0}
ip link set ${bridge} down
ip link set ${netdev} name ${vdev}
ip link set ${pdev} name ${netdev}
do_ifup ${netdev}
    else
transfer_routes ${bridge} ${netdev}
ip link set ${bridge} down
    fi
    brctl delbr ${bridge}
}
ifup_and_wait() {
    local dev=$1
    local maxtries=10
    echo -n "Waiting for ${dev} to negotiate link."
    ip link set ${dev} up
    for i in `seq ${maxtries}` ; do
if ifconfig ${dev} | grep -q RUNNING ; then
    break
else
    echo -n '.'
    sleep 1
fi
    done
    if [ ${i} -eq ${maxtries} ] ; then echo '(link isnt in running state)' ; fi
}
case "$command" in
    start)
op_start
;;
    
    stop)
op_stop
;;
    status)
show_status ${netdev} ${bridge}
;;
    *)
echo "Unknown command: $command" >&2
echo 'Valid commands are: start, stop, status' >&2
exit 1
esac
[root@sgz data2]# cat /etc/xen/scripts/two.sh |grep -v "#"|grep -v "^$"
set -e
OP=$1
shift
script=/etc/xen/scripts/network-bridge-2
case ${OP} in
start)
$script start vifnum=1 bridge=xenbr1 netdev=eth1
$script start vifnum=0 bridge=xenbr0 netdev=eth0
;;
stop)
$script stop vifnum=1 bridge=xenbr1 netdev=eth1
$script stop vifnum=0 bridge=xenbr0 netdev=eth0
;;
status)
$script status vifnum=1 bridge=xenbr1 netdev=eth1
$script status vifnum=0 bridge=xenbr0 netdev=eth0
;;
*)
echo 'Unknown command: ' ${OP}
echo 'Valid commands are: start, stop, status'
exit 1
esac









本文转自 jxwpx 51CTO博客,原文链接:http://blog.51cto.com/jxwpx/787853,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
Linux 开发工具 数据安全/隐私保护
Centos7:自动化配置vim | suoders信任列表添加普通用户
Centos7:自动化配置vim | suoders信任列表添加普通用户
25 0
|
28天前
|
Java Linux
为centos7配置jdk
为centos7配置jdk
28 3
|
1月前
|
网络协议 安全 Linux
linux配置防火墙 Centos7下 添加 端口白名单
linux配置防火墙 Centos7下 添加 端口白名单
87 0
|
21天前
|
Linux 网络安全 开发工具
Centos6.5安装并配置Telnet服务
该内容是一个关于如何安装配置Telnet服务的教程。首先,通过yum安装vim、xinetd、telnet和telnet-server。接着,修改/etc/xinetd.d/telnet配置文件,将disable改为no,并设置访问限制(如限定特定网段和时间)。关闭防火墙,重启服务。创建测试用户后,分别使用CentOS和Windows的Telnet客户端进行连接测试,显示成功,实验完成。
26 1
|
8天前
|
Linux
CentOS 7 配置yum阿里源 (三步即可)
CentOS 7 配置yum阿里源 (三步即可)
113 1
|
17天前
|
XML 安全 Linux
【Linux】深入探究CentOS防火墙(Firewalld):基础概念、常用命令及实例操作
【Linux】深入探究CentOS防火墙(Firewalld):基础概念、常用命令及实例操作
|
19天前
|
网络协议 Java 应用服务中间件
记录_centos7离线环境和虚拟机共享文件安装jdk和tomcat(配置环境变量)
记录_centos7离线环境和虚拟机共享文件安装jdk和tomcat(配置环境变量)
11 0
|
21天前
|
Linux 网络安全 开发工具
Centos7 sendmail服务安装与配置
该文本描述了在Linux系统中设置邮件服务的步骤。首先,启用httpd的邮件发送功能,然后安装sendmail、sendmail-cf和dovecot。接着配置/sendmail.mc,设定IP和邮件域名。在dovecot配置文件中启用imap、pop3和lmtp协议,取消明文认证限制,设定mail_location,并开启SSL。创建用户mail3和mail4,给予相应权限。停止postfix服务,编辑访问控制、提交配置、本地主机名等文件。最后,重置sendmail、dovecot和saslauthd服务。
47 0
|
21天前
|
运维 网络协议 Linux
【运维系列】Centos7安装并配置PXE服务
PXE是Intel开发的预启动执行环境,允许工作站通过网络从远程服务器启动操作系统。它依赖DHCP分配IP,DNS服务分配主机名,TFTP提供引导程序,HTTP/FTP/NFS提供安装源。要部署PXE服务器,需关闭selinux和防火墙,安装dhcpd、httpd、tftp、xinetd及相关服务,配置引导文件和Centos7安装源。最后,通过syslinux安装引导文件,并创建pxelinux.cfg/default配置文件来定义启动参数。
57 0
|
21天前
|
运维 网络协议 Linux
【运维系列】Centos7安装并配置postfix服务
安装CentOS7的Postfix和Dovecot,配置Postfix的`main.cf`文件,包括修改完全域名、允许所有IP、启用邮箱等。然后,配置Dovecot的多个配置文件以启用auth服务和调整相关设置。重启Postfix和Dovecot,设置开机自启,并关闭防火墙进行测试。最后,创建邮箱账户并在Windows邮箱客户端中添加账户设置。
19 0