linux下關於網路的配置檔案(兼顧各主流發行版本)(轉)

ba發表於2007-08-16
linux下關於網路的配置檔案(兼顧各主流發行版本)(轉)[@more@]其實,無所謂特定的發行版本的,眾所周知,Linux的發行版實在是太多了,LSB都沒能同一起來。network是在系統啟動透過一 些個指令碼來啟動的,例如 redhat /fedora下的/etc/init.d/network檔案,適當的閱讀系統的初始化指令碼吧
[lee@lee init.d]$ cat network
#! /bin/bash
#
# network Bring up/down networking
#
# chkconfig: 2345 10 90
# description: Activates/Deactivates all network interfaces configured to
# start at boot time.
#
### BEGIN INIT INFO
# Provides: $network
### END INIT INFO

# Source function library.
. /etc/init.d/functions

if [ ! -f /etc/sysconfig/network ]; then
exit 0
fi

. /etc/sysconfig/network

if [ -f /etc/sysconfig/pcmcia ]; then
. /etc/sysconfig/pcmcia
fi


# Check that networking is up.
[ "${NETWORKING}" = "no" ] && exit 0

# if the ip configuration utility isn't around we can't function.
[ -x /sbin/ip ] || exit 1

# Even if IPX is configured, without the utilities we can't do much
[ ! -x /sbin/ipx_internal_net -o ! -x /sbin/ipx_configure ] && IPX=

# Even if VLAN is configured, without the utility we can't do much
[ ! -x /sbin/vconfig ] && VLAN=

CWD=`pwd`
cd /etc/sysconfig/network-scripts

. network-functions //注意這個可愛的指令碼檔案!

# find all the interfaces besides loopback.
# ignore aliases, alternative configurations, and editor backup files
interfaces=`ls ifcfg* |
LANG=C sed -e '/(ifcfg-lo|:|ifcfg-.*-range)/d'
-e '/(rpmsave|rpmorig|rpmnew)/d'
-e '/(~|.bak)$/d'
-e '/ifcfg-[A-Za-z0-9._-]+$/ { s/^ifcfg-//g;s/[0-9]/ &/}' |
LANG=C sort -k 1,1 -k 2n |
LANG=C sed 's/ //'`

# See how we were called.
case "$1" in
start)
# IPv6 hook (pre IPv4 start)
if [ "$NETWORKING_IPV6" = "yes" ]; then
if [ -x /etc/sysconfig/network-scripts/init.ipv6-global ]; then
/etc/sysconfig/network-scripts/init.ipv6-global start pre
fi
fi

sysctl -e -p /etc/sysctl.conf >/dev/null 2>&1

# bring up loopback interface
action $"Bringing up loopback interface: " ./ifup ifcfg-lo

case "$IPX" in
yes|true)
/sbin/ipx_configure --auto_primary=$IPXAUTOPRIMARY
--auto_interface=$IPXAUTOFRAME
if [ "$IPXINTERNALNETNUM" != "0" ]; then
/sbin/ipx_internal_net add $IPXINTERNALNETNUM $IPXINTERNALNODENUM
fi
;;
esac

case "$VLAN" in
yes)
if [ -d /proc/net/vlan ] || modprobe 8021q >/dev/null 2>&1 ; then
test -z "$VLAN_NAME_TYPE" && VLAN_NAME_TYPE=DEV_PLUS_VID_NO_PAD
action $"Setting 802.1Q VLAN parameters: " /sbin/vconfig set_name_type "$VLAN_NAME_TYPE"
else
echo $"No 802.1Q VLAN support available in kernel."
fi
;;
esac

vlaninterfaces=""
cipeinterfaces=""
xdslinterfaces=""
bridgeinterfaces=""

# bring up all other interfaces configured to come up at boot time
for i in $interfaces; do
eval $(LANG=C fgrep "DEVICE=" ifcfg-$i)
eval $(LANG=C fgrep "TYPE=" ifcfg-$i)
eval $(LANG=C fgrep "SLAVE=" ifcfg-$i)
eval $(LANG=C fgrep "BRIDGE=" ifcfg-$i)

if [ -z "$DEVICE" ] ; then DEVICE="$i"; fi

if [ "${DEVICE##cipcb}" != "$DEVICE" ] ; then
cipeinterfaces="$cipeinterfaces $i"
unset DEVICE TYPE SLAVE BRIDGE
continue
fi
if [ "$TYPE" = "xDSL" ]; then
xdslinterfaces="$xdslinterfaces $i"
unset DEVICE TYPE SLAVE BRIDGE
continue
fi

if [ -n "$BRIDGE" ]; then
is_available $i
bridgeinterfaces="$bridgeinterfaces $i"
unset DEVICE TYPE SLAVE BRIDGE
continue
fi

if [ "${DEVICE%%.*}" != "$DEVICE" ] ; then
vlaninterfaces="$vlaninterfaces $i"
unset DEVICE TYPE SLAVE BRIDGE
continue
fi

if [ "$SLAVE" = "yes" ]; then
unset DEVICE TYPE SLAVE BRIDGE
continue
fi
unset DEVICE TYPE SLAVE BRIDGE

if LANG=C egrep -L "^ONBOOT=['"]?[Nn][Oo]['"]?" ifcfg-$i > /dev/null ; then
# this loads the module, to preserve ordering
is_available $i
continue
fi
# If we're in confirmation mode, get user confirmation.
if [ -f /var/run/confirm ]; then
confirm $i
test $? = 1 && continue
fi
action $"Bringing up interface $i: " ./ifup $i boot
done

# Bring up xDSL and CIPE interfaces
for i in $vlaninterfaces $bridgeinterfaces $xdslinterfaces $cipeinterfaces ; do
if ! LANG=C egrep -L "^ONBOOT=['"]?[Nn][Oo]['"]?" ifcfg-$i >/dev/null 2>&1 ; then
# If we're in confirmation mode, get user confirmation.
if [ -f /var/run/confirm ]; then
confirm $i
test $? = 1 && continue
fi
action $"Bringing up interface $i: " ./ifup $i boot
fi
done

# Add non interface-specific static-routes.
if [ -f /etc/sysconfig/static-routes ]; then
grep "^any" /etc/sysconfig/static-routes | while read ignore args ; do
/sbin/route add -$args
done
fi

# IPv6 hook (post IPv4 start)
if [ "$NETWORKING_IPV6" = "yes" ]; then
if [ -x /etc/sysconfig/network-scripts/init.ipv6-global ]; then
/etc/sysconfig/network-scripts/init.ipv6-global start post
fi
fi
# Run this again to catch any interface-specific actions
sysctl -e -p /etc/sysctl.conf >/dev/null 2>&1

touch /var/lock/subsys/network
;;
stop)
# If this is a final shutdown/halt, check for network FS,
# and unmount them even if the user didn't turn on netfs

if [ "$RUNLEVEL" = "6" -o "$RUNLEVEL" = "0" -o "$RUNLEVEL" = "1" ]; then
NFSMTAB=`LC_ALL=C awk '$3 ~ /^nfs/ { print $2 }' /proc/mounts`
SMBMTAB=`LC_ALL=C awk '$3 == "smbfs" { print $2 }' /proc/mounts`
NCPMTAB=`LC_ALL=C awk '$3 == "ncpfs" { print $2 }' /proc/mounts`
if [ -n "$NFSMTAB" -o -n "$SMBMTAB" -o -n "$NCPMTAB" ] ; then
/etc/init.d/netfs stop
fi
fi

# IPv6 hook (pre IPv4 stop)
if [ "$NETWORKING_IPV6" = "yes" ]; then
if [ -x /etc/sysconfig/network-scripts/init.ipv6-global ]; then
/etc/sysconfig/network-scripts/init.ipv6-global stop pre
fi
fi

vlaninterfaces=""
cipeinterfaces=""
xdslinterfaces=""
bridgeinterfaces=""
remaining=""

# get list of bonding, cipe, and xdsl interfaces
for i in $interfaces; do
eval $(LANG=C fgrep "DEVICE=" ifcfg-$i)
eval $(LANG=C fgrep "TYPE=" ifcfg-$i)
eval $(LANG=C fgrep "BRIDGE=" ifcfg-$i)

if [ -z "$DEVICE" ] ; then DEVICE="$i"; fi

if [ "${DEVICE##cipcb}" != "$DEVICE" ] ; then
cipeinterfaces="$cipeinterfaces $i"
unset DEVICE TYPE BRIDGE
continue
fi
if [ -n "$BRIDGE" ]; then
bridgeinterfaces="$bridgeinterfaces $i"
unset DEVICE TYPE BRIDGE
continue
fi
if [ "$TYPE" = "xDSL" ]; then
xdslinterfaces="$xdslinterfaces $i"
unset DEVICE TYPE BRIDGE
continue
fi

if [ "${DEVICE%%.*}" != "$DEVICE" ] ; then
vlaninterfaces="$vlaninterfaces $i"
unset DEVICE TYPE SLAVE BRIDGE
continue
fi
remaining="$remaining $i"
unset DEVICE TYPE BRIDGE
done

for i in $cipeinterfaces $xdslinterfaces $bridgeinterfaces $vlaninterfaces; do
eval $(fgrep "DEVICE=" ifcfg-$i)
if [ -z "$DEVICE" ] ; then DEVICE="$i"; fi

if ! check_device_down $DEVICE; then
action $"Shutting down interface $i: " ./ifdown $i boot
fi
done

# shut down all interfaces (other than loopback)
for i in $remaining ; do
eval $(fgrep "DEVICE=" ifcfg-$i)
if [ -z "$DEVICE" ] ; then DEVICE="$i"; fi

if ! check_device_down $DEVICE; then
action $"Shutting down interface $i: " ./ifdown $i boot
fi
done
case "$IPX" in
yes|true)
if [ "$IPXINTERNALNETNUM" != "0" ]; then
/sbin/ipx_internal_net del
fi
;;
esac

action $"Shutting down loopback interface: " ./ifdown ifcfg-lo

if [ -d /proc/sys/net/ipv4 ]; then
#ip的高階選項
if [ -f /proc/sys/net/ipv4/ip_forward ]; then
if [ `cat /proc/sys/net/ipv4/ip_forward` != 0 ]; then
action $"Disabling IPv4 packet forwarding: " sysctl -w net.ipv4.ip_forward=0
fi
fi
if [ -f /proc/sys/net/ipv4/ip_always_defrag ]; then
if [ `cat /proc/sys/net/ipv4/ip_always_defrag` != 0 ]; then
action $"Disabling IPv4 automatic defragmentation: " sysctl -w net.ipv4.ip_always_defrag=0
fi
fi
fi

# IPv6 hook (post IPv4 stop)
if [ "$NETWORKING_IPV6" = "yes" ]; then
if [ -x /etc/sysconfig/network-scripts/init.ipv6-global ]; then
/etc/sysconfig/network-scripts/init.ipv6-global stop post
fi
fi

rm -f /var/lock/subsys/network
;;
status)
echo $"Configured devices:"
echo lo $interfaces

echo $"Currently active devices:"
echo `/sbin/ip -o link show | awk -F ": " '/UP>/ { print $2 }'`
;;
restart|reload)
cd "$CWD"
$0 stop
$0 start
;;
*)
echo $"Usage: $0 {start|stop|restart|reload|status}"
exit 1
esac

exit 0

這就是指令碼,充滿了sed,grep,egrep,awk的正規表示式,多麼神奇的世界!
看看他們就在哪!!!一點都沒變!

Red hat

/etc/sysconfig/network
/etc/sysconfig/networking
/etc/sysconfig/network-scripts/ifcfg-ifname
以下是本人在PC上的操作,仔細檢視各檔案,上述三個檔案以外的儘可能的包含到詳細的網路設定資訊:
[lee@lee sysconfig]$ ls
amd bluetooth dund i18n kudzu network prelink squid xgl
apmd cbq firstboot init lm_sensors networking rhn syslog xinetd
apm-scripts clock grub iptables-config modules network-scripts samba system-config-securitylevel
arpwatch console hidd irda named ntpd saslauthd system-config-users
auditd crond hsqldb irqbalance netdump pand selinux tux
authconfig desktop httpd kernel netdump_id_dsa pgsql sendmail vncservers
autofs diskdump hwconf keyboard netdump_id_dsa.pub pm spamassassin wpa_supplicant
[lee@lee sysconfig]$ cat network
NETWORKING=yes
HOSTNAME=lee.study.home
[lee@lee sysconfig]$ cd networking
[lee@lee networking]$ ls
devices profiles
[lee@lee networking]$ cd devices
[lee@lee devices]$ ls
ifcfg-eth0 ifcfg-eth1
[lee@lee devices]$ cat ifcfg-eth0
# Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+
DEVICE=eth0
BOOTPROTO=none
BROADCAST=192.168.0.255
HWADDR=00:E0:4D:90:4B:54
IPADDR=192.168.0.128
NETMASK=255.255.255.0
NETWORK=192.168.0.0
ONBOOT=yes
USERCTL=yes
IPV6INIT=no
PEERDNS=yes
GATEWAY=192.168.0.1
TYPE=Ethernet
[lee@lee devices]$ cd ..
[lee@lee networking]$ cd profiles
[lee@lee profiles]$ ls
default defaultCopy0
[lee@lee profiles]$ cd default
[lee@lee default]$ ls
hosts ifcfg-eth0 ifcfg-eth1 network resolv.conf
[lee@lee default]$ cat resolv.conf
# generated by NetworkManager, do not edit!

search study.home




nameserver 202.102.224.68
nameserver 202.102.247.250
[lee@lee default]$ cat hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 lee.study.home lee localhost.localdomain localhost


Suse
/etc/rc.config
/etc/route.conf

Debian(注:沒見過真正的Debian版本,只能以Ubuntu代替)
/etc/hostname
/etc/network/interfaces

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-961457/,如需轉載,請註明出處,否則將追究法律責任。

相關文章