#!/bin/bash # 设置 bridge 名称 BRIDGE=dragonos-bridge # 设置网络信息 NETWORK=192.168.137.0 NETMASK=255.255.255.0 GATEWAY=192.168.137.1 DHCPRANGE=192.168.137.100,192.168.137.200 # 启用PXE支持的可选参数 TFTPROOT= BOOTP= function check_bridge() { if brctl show | grep "^$BRIDGE" &> /dev/null; then return 1 else return 0 fi } function create_bridge() { brctl addbr "$BRIDGE" brctl stp "$BRIDGE" on brctl setfd "$BRIDGE" 0 ifconfig "$BRIDGE" "$GATEWAY" netmask "$NETMASK" up } function enable_ip_forward() { echo 1 > /proc/sys/net/ipv4/ip_forward } function add_filter_rules() { iptables -t nat -A POSTROUTING -s "$NETWORK"/"$NETMASK" \ ! -d "$NETWORK"/"$NETMASK" -j MASQUERADE } function start_dnsmasq() { # 禁止重复运行dnsmasq ps -ef | grep "dnsmasq" | grep -v "grep" &> /dev/null if [ $? -eq 0 ]; then echo "dnsmasq 已经在运行" return 1 fi dnsmasq \ --strict-order \ --except-interface=lo \ --interface=$BRIDGE \ --listen-address=$GATEWAY \ --bind-interfaces \ --dhcp-range=$DHCPRANGE \ --conf-file="" \ --pid-file=/var/run/qemu-dhcp-$BRIDGE.pid \ --dhcp-leasefile=/var/run/qemu-dhcp-$BRIDGE.leases \ --dhcp-no-override \ ${TFTPROOT:+"--enable-tftp"} \ ${TFTPROOT:+"--tftp-root=$TFTPROOT"} \ ${BOOTP:+"--dhcp-boot=$BOOTP"} } function setup_bridge_nat() { check_bridge "$BRIDGE" if [ $? -eq 0 ]; then create_bridge fi enable_ip_forward add_filter_rules "$BRIDGE" start_dnsmasq "$BRIDGE" } # 安装前需要检查$1参数 if [ -n "$1" ]; then setup_bridge_nat brctl addif "$BRIDGE" "$1" ifconfig "$1" 0.0.0.0 up exit 0 else echo "发现错误:没有指定接口" exit 1 fi