கையேடு:பாகங்கள்/வலையமைத்தல்/மேம்பட்டது

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Handbook:Parts/Networking/Advanced and the translation is 46% complete.
Outdated translations are marked like this.
எச்சரிக்கை
கையேடு:பாகங்கள் பெயர்வெளி (அதாவது இந்த பக்கத்தை!) அல்லது இதன் துணை பக்கத்தில் உள்ள வழிமுறைகளை நேரடியாக பின்பற்ற வேண்டாம். கையேடு:பாகங்கள் பக்கங்களை மற்ற கையேடுகளுக்கு உரைகளை ஒருங்கிணைக்க பயன்படுத்தப்படும் மீ கையேடாகும். முழுமையான நிறுவல் வழிமுறைகளுக்கு கையேடு பட்டியலில் உள்ள குறிப்பிட்ட கட்டமைப்பிற்கான கையேடை பயன்படுத்தவும்.
Parts கையேடு
நிறுவல்
நிறுவலைப் பற்றி
ஊடகத்தைத் தேர்ந்தெடுத்தல்
வலையமைப்பை உள்ளமைத்தல்
தகடுகளை ஆயத்தப்படுத்தல்
நிலை3 ஐ நிறுவுதல்
அடிப்படை முறைமையை நிறுவுதல்
கருநிரலை உள்ளமைத்தல்
முறைமையை உள்ளமைத்தல்
கருவிகளை நிறுவுதல்
துவக்க ஏற்றியை உள்ளமைத்தல்
நிறுவலை முடித்தல்
சென்டூவோடு வேளை செய்தல்
Portage முன்னுரை
USE கொடிகள்
Portage தனிச்சிறப்புகள்
Init குறுநிரல் முறைமை
சூழல் மாறிகள்
Portage ஓடு வேளை செய்தல்
கோப்புகள் மற்றும் அடைவுகள்
மாறிகள்
மென்பொருள் கிளைகளைக் கலக்குதல்
கூடுதல் கருவிகள்
தனிப்பயன் தொகுப்பு கருவூலம்
மேம்பட்ட தனிச்சிறப்புகள்
வலையமைப்பு உள்ளமைவு
தொடங்குதல்
மேம்பட்ட உள்ளமைவு
கூறுநிலை வலையமாக்கம்
கம்பியில்லா
செயல்பாடுகளைச் சேர்த்தல்
இயக்க மேலாண்மை


config_eth0 மாறியானது இடைமுக உள்ளமைவின் நெஞ்சாங்குலையாகும். இது இடைமுகத்தை உள்ளமைப்பதற்கான (இந்த வழக்கில் eth0) உயர் நிலை வழிகாட்டுதல் பட்டியலாகும். இந்த வழிகாட்டுதல் பட்டியலில் உள்ள ஒவ்வொரு கட்டளையும் வரிசை முறையில் செயல்படுத்தும். குறைந்தது ஒரு கட்டளையாவது வேளை செய்தாலும் இடைமுகம் சரியானதாகக் கருதப்படும்.

உள்ளமைக்கப்பட்ட வழிகாட்டுதல்களின் பட்டியல் இதோ:

மதிப்பு விளக்கம்
null எதையும் செய்யாது.
noop இடைமுகம் இயங்குநிலையில் இருந்து, அதற்கு ஒரு முகவரி இருந்தால், உள்ளமைவை வெற்றிகரமாக நிறுத்தும்.
IPv4 அல்லது IPv6 முகவரி முகவரியை இடைமுகத்தில் சேர்க்கும்.
dhcp, adsl அல்லது apipa (அல்லது மூன்றாம் தரப்பு கூறு மூலம் வரும் ஒரு விருப்பிற்கேற்ப மதிப்பு) கட்டளையை அளிக்கும் கூறை இயக்குகிறது. எடுத்துக்காட்டாக dhcp ஆனது dhcpcd, dhclient அல்லது pump ஆல் அணுகக்கூடிய DHCP ஐ அளிக்கும் கூறை இயக்கும்.

கட்டளை தோல்வியடைந்தால், பின்சார்தல் மதிப்பைக் குறிப்பிடவும். பின்சார்தல் ஆனது உள்ளமைவு கட்டுமானத்தோடு மிகச்சரியாகப் பொருந்த வேண்டும்.

இந்த மதிப்புகளை ஒன்றாக இணைக்க வாய்ப்புள்ளது. இதற்கான சில எடுத்துக்காட்டுகளை இங்குக் காணலாம்:

கோப்பு /etc/conf.d/netஉள்ளமைவு எடுத்துக்காட்டுகள்
# மூன்று IPv4 முகவரிகளைச் சேர்த்தல்
config_eth0="192.168.0.2/24
192.168.0.3/24
192.168.0.4/24"
  
# ஒரு IPv4 முகவரி மற்றும் இரண்டு IPv6 முகவரிகளைச் சேர்த்தல்
config_eth0="192.168.0.2/24
4321:0:1:2:3:4:567:89ab
4321:0:1:2:3:4:567:89ac"
  
# இடைமுகம் நிற்காத வரை, நம்முடைய கருநிரல் ஒதுக்கீடு செய்த முகவரியை வைத்திருக்கும். 
# அவ்வாறு ஆகும்போது DHCP மூலம் மற்றொரு முகவரியை ஒதுக்கீடு செய்யும். 
# DHCP தோல்வியடைந்தால் APIPA ஆல் தீர்மானிக்கப்பட்ட நிலையான முகவரியைச் சேர்க்கவும்
config_eth0="noop
dhcp"
fallback_eth0="null
apipa"
குறிப்பு
When using the ifconfig module and adding more than one address, interface aliases are created for each extra address. So with the above two examples users will get interfaces eth0, eth0:1 and eth0:2. It is not possible to do anything special with these interfaces as the kernel and other programs will just treat eth0:1 and eth0:2 as eth0.
முக்கியமானது
பின்சார்தல் வரிசை முக்கியமானது! null விருப்பத்தேர்வு குறிப்பிடப்படவில்லை என்றால், noop தோல்வியடைந்தால் மட்டுமே apipa ஐ இயக்க இயலும்.
குறிப்பு
APIPA (கையேடு) மற்றும் DHCP (கையேடு) ஆகியவை கூறுநிலை வலையமாக்கல் பிரிவில் விவரிக்கப்பட்டுள்ளன.

வலையமைப்பு சார்புநிலைகள்

/etc/init.d/ இல் உள்ள Init குறுநிரல் ஒரு குறிப்பிட்ட வலையமைப்பு இடைமுகத்தை அல்லது வெறும் "net" ஐ சார்ந்திருக்கும். சென்டூவின் init முறைமையில் உள்ள எல்லா வலையமைப்பு இடைமுகங்களும் "net" என அழைக்கப்படுவதை அளிக்கிறது.

If, in /etc/rc.conf, the rc_depend_strict variable is set to YES, then all network interfaces that provide "net" must be active before a dependency on "net" is assumed to be met. In other words, if a system has a net.eth0 and net.eth1 and an init script depends on "net", then both must be enabled.

On the other hand, if rc_depend_strict="NO" is set, then the "net" dependency is marked as resolved the moment at least one network interface is brought up.

But what about net.br0 depending on net.eth0 and net.eth1? net.eth1 may be a wireless or PPP device that needs configuration before it can be added to the bridge. This cannot be done in /etc/init.d/net.br0 as that's a symbolic link to net.lo.

/etc/conf.d/net இல் rc_net_{interface}_need அமைப்பை வரையறுத்தல் இதற்கான தீர்வாகும்:

கோப்பு /etc/conf.d/netnet.br0 சார்புநிலையை சேர்த்தல்
rc_net_br0_need="net.eth0 net.eth1"

That alone, however, is not sufficient. Gentoo's networking init scripts use a virtual dependency called "net" to inform the system when networking is available. Clearly, in the above case, networking should only be marked as available when net.br0 is up, not when the others are. So we need to tell that in /etc/conf.d/net as well:

கோப்பு /etc/conf.d/netவலையமாக்கலுக்கான மெய்நிகர் சார்புநிலைகளை மற்றும் ஒதுக்குகளை இற்றைப்படுத்தல்
rc_net_eth0_provide="!net"
rc_net_eth1_provide="!net"

சார்புநிலை பற்றிய மேலும் விரிவான விளக்கத்திற்கு, சென்டூ கையேட்டில் உள்ள init குறுநிரல்களை எழுதுவதைப் பற்றி விளக்கும் பிரிவைப் பார்வையிடவும். /etc/rc.conf ஐ பற்றிய மேலும் தகவல்கள் அந்த கோப்பினுள் கருத்துக்களாகக் கிடைக்கிறது.

மாறி பெயர்கள் மற்றும் மதிப்புகள்

Variable names are dynamic. They normally follow the structure of variable_${interface|mac|essid|apmac}. For example, the variable dhcpcd_eth0 holds the value for dhcpcd options for eth0 and dhcpcd_essid holds the value for dhcpcd options when any interface connects to the ESSID "essid".

However, there is no hard and fast rule that states interface names must be ethx. In fact, many wireless interfaces have names like wlanx, rax as well as ethx. Also, some user defined interfaces such as bridges can be given any name. To make life more interesting, wireless Access Points can have names with non alpha-numeric characters in them - this is important because users can configure networking parameters per ESSID.

The downside of all this is that Gentoo uses bash variables for networking - and bash cannot use anything outside of English alpha-numerics. To get around this limitation we change every character that is not an English alpha-numeric into an _ (underscore) character.

Another downside of bash is the content of variables - some characters need to be escaped. This can be achieved by placing the \ (backslash) character in front of the character that needs to be escaped. The following list of characters needs to be escaped in this way: ", ' and \.

In this example we use wireless ESSID as they can contain the widest scope of characters. We shall use the ESSID My "\ NET:

கோப்பு /etc/conf.d/netமாறி பெயர்கள்
# இது வேலை செய்தாலும் இந்த களம் ஒத்துக்கொள்ளமுடியாததாகும்
dns_domain_My____NET="My \"\\ NET"

The above sets the DNS domain to My "\ NET when a wireless card connects to an AP whose ESSID is My "\ NET.

வலையமைப்பு இடைமுக பெயரிடல்

எவ்வாறு வேலை செய்கிறது

Network interface names are not chosen arbitrarily: the Linux kernel and the device manager (most systems have udev as their device manager although others are available as well) choose the interface name through a fixed set of rules.

ஒரு முறைமையில் இடைமுக அட்டை கண்டறியப்பட்டவுடன், அந்த அட்டையைப் பற்றிய தேவையான தரவுகளை லினக்ஸ் கருநிரல் சேகரிக்கிறது. இதில் அடங்குபவை:

  • The onboard (on the interface itself) registered name of the network card, which is later seen through the ID_NET_NAME_ONBOARD value.
  • The slot in which the network card is plugged in, which is later seen through the ID_NET_NAME_SLOT value.
  • The path through which the network card device can be accessed, which is later seen through the ID_NET_NAME_PATH value.
  • The (vendor-provided) MAC address of the card, which is later seen through the ID_NET_NAME_MAC value.

இந்த தகவல்களின் அடிப்படையில், முறைமையில் உள்ள இடைமுகத்தை எவ்வாறு பெயரிட வேண்டும் என்பதைச் சாதன மேலாளர் தீர்மானிக்கிறது. இயல்பாக இது மேலுள்ள முதல் மூன்று மாறிகளில் முதலில் கிடைப்பதைப் பயன்படுத்துகிறது (ID_NET_NAME_ONBOARD, _SLOT அல்லது _PATH). எடுத்துக்காட்டாக, ID_NET_NAME_ONBOARD கண்டறியப்பட்டு eno1 என அமைக்கப்பட்டால், இடைமுகம் eno1 என அழைக்கப்படும்.

Given an active interface name, the values of the provided variables can be shown using udevadm:

root #udevadm test-builtin net_id /sys/class/net/enp3s0 2>/dev/null
ID_NET_NAME_MAC=enxc80aa9429d76
ID_OUI_FROM_DATABASE=Quanta Computer Inc.
ID_NET_NAME_PATH=enp3s0

As the first (and actually only) hit of the top three variables is ID_NET_NAME_PATH, its value is used as the interface name. If none of the variables contain values, then the system reverts back to the kernel-provided naming (eth0, eth1, etc.)

பழைய-முறை கருநிரல் பெயரிடலை பயன்படுத்தல்

Before this change, network interface cards were named by the Linux kernel itself, depending on the order that drivers are loaded (amongst other, possibly more obscure reasons). This behavior can still be enabled by setting the net.ifnames=0 boot parameter in the boot loader.

தனிப்பயன் பெயர்களைப் பயன்படுத்துதல்

The entire idea behind the change in naming is not to confuse people, but to make changing the names easier. Suppose a system has two interfaces that are otherwise called eth0 and eth1. One is meant to access the network through a wire, the other one is for wireless access. With the support for interface naming, users can have these called lan0 (wired) and wifi0 (wireless - it is best to avoid using the previously well-known names like eth* and wlan* as those can still collide with the suggested names).

Find out what the parameters are for the cards and then use this information to set up a custom own naming rule:

root #udevadm test-builtin net_id /sys/class/net/eth0 2>/dev/null
ID_NET_NAME_MAC=enxc80aa9429d76
ID_OUI_FROM_DATABASE=Quanta Computer Inc.
root #vim /etc/udev/rules.d/70-net-name-use-custom.rules
# First one uses MAC information, and 70- number to be before other net rules
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="c8:0a:a9:42:9d:76", NAME="lan0"
root #vim /etc/udev/rules.d/76-net-name-use-custom.rules
# Second one uses ID_NET_NAME_PATH information, and 76- number to be between
# 75-net-*.rules and 80-net-*.rules
SUBSYSTEM=="net", ACTION=="add", ENV{ID_NET_NAME_PATH}=="enp3s0", NAME="wifi0"

Because the rules are triggered before the default one (rules are triggered in alphanumerical order, so 70 comes before 80) the names provided in the rule file will be used instead of the default ones. The number granted to the file should be between 76 and 79 (the environment variables are defined by a rule start starts with 75 and the fallback naming is done in a rule numbered 80).