12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- #!/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
|