Gentoo Linux x86 Handbook: Network configuration
The following networking portion of the handbook describes 'advanced' network configuration for systems running the OpenRC init system utilizing netifrc as the network management system.
For systems running systemd, readers should review see the networking portion of the systemd article.
தொடங்குதல்
இந்த வலையமைத்தல் வழிகாட்டி பயனர் முறைமையைச் சரியாக உள்ளமைத்து, வன்பொருளின் வலையமைப்பு இடைமுக பெயர்(களை) தீர்மானித்துள்ளார் எனக் கருதுகிறது. வலையமைப்பு இடைமுக பெயரானது முறைமையிலுள்ள வலையமைப்பு அட்டை(களின்) பாட்டை இருப்பிடத்தை அடிப்படையாகக் கொண்டு உற்பத்தி செய்யப்படுகிறது. இதன் விளைவாகப் பல இடைமுக பெயர் திரிபுகளான eno0, ens1, wlan0, enp1s0 முதலியவற்றிற்கான சாத்தியக்கூறுகள் உள்ளது. ஒவ்வொரு முறைமையும் சற்று வெவ்வேறான இடைமுக பெயர்களைக் கொண்டிருக்கும். மேல் கூறப்பட்டுள்ள எல்லா இடைமுக பெயர்களும் வேளை செய்யும் என்றாலும் பின்வரும் உள்ளடக்கம் இடைமுக பெயர் eth0 என உள்ளமைக்கப்பட்டிருப்பதாக கருதுகிறது.
வலையமைப்பு அட்டை உள்ளமைத்தலை தொடங்குவதற்கு, இதைப்பற்றி சென்டூ RC முறைமையிடம் சொல்லவும். இதைச் செய்வதற்கு /etc/init.d இல் net.lo இல் இருந்து net.eth0 ற்கு (அல்லது என்ன வலையமைப்பு இடைமுக பெயர் முறைமையில் உள்ளதோ அதற்கு) ஒரு குறியீட்டுத் தொடுப்பை உருவாக்கவும்.
root #
cd /etc/init.d
root #
ln -s net.lo net.eth0
சென்டூவின் RC முறைமை இந்த இடைமுகத்தைப் பற்றி இப்போது அறிந்துள்ளது என்றாலும் இந்த புதிய இடைமுகத்தை எவ்வாறு உள்ளமைப்பது என்பதைப் பற்றியும் அது அறிந்திருக்க வேண்டும். எல்லா வலையமைப்பு இடைமுகங்களும் /etc/conf.d/net கோப்பில் உள்ளமைக்கப்பட்டுள்ளன. கீழே இருப்பது DHCP மற்றும் நிலையான முகவரிகளுக்கான ஒரு மாதிரி உள்ளமைவாகும்.
# DHCP க்கு
config_eth0="dhcp"
# CIDR குறியீட்டைப் பயன்படுத்தும் நிலையான IP க்கு
config_eth0="192.168.0.7/24"
routes_eth0="default via 192.168.0.1"
dns_servers_eth0="192.168.0.1 8.8.8.8"
# netmask குறியீட்டைப் பயன்படுத்தும் நிலையான IP க்கு
config_eth0="192.168.0.7 netmask 255.255.255.0"
routes_eth0="default via 192.168.0.1"
dns_servers_eth0="192.168.0.1 8.8.8.8"
இடைமுகத்திற்கு எந்த ஒரு உள்ளமைவும் குறிப்பிடப்படவில்லை என்றால் DHCP கருதப்படும்.
CIDR என்பது வகுப்பில்லாத இடைநிலை கள வழியாக்கல் (Classless InterDomain Routing) இன் சுருக்கமாகும். முதலில் IPv4 முகவரிகள் A, B அல்லது C என வகைப்படுத்தப்பட்டன. துவக்கக்கால வகைப்படுத்தல் முறை இணையத்தின் பெருத்த செல்வாக்கைக் கணித்து உருவாக்கப்படவில்லை என்பதால் புதிய தனித்துவமான முகவரிகள் தீர்ந்து போகும் ஆபத்து இருக்கிறது. CIDR என்பது ஒரு IP முகவரி பல IP முகவரிகளை பணியமர்த்த அனுமதிக்கும் ஒரு முகவரியாக்கத் திட்டமாகும். CIDR IP முகவரியானது வழக்கமான IP முகவரியைப் போலத் தோன்றினாலும் இதன் இறுதியில் ஒரு கீறலும் (slash) அதனைத் தொடர்ந்து ஒரு எண்ணைக் கொண்டு முடிகிறது; எடுத்துக்காட்டாக, 192.168.0.0/16. RFC 1519 இல் CIDR விவரிக்கப்பட்டுள்ளது.
இப்போது இடைமுகம் உள்ளமைக்கப்பட்டுவிட்டதால், இதை நாம் பின்வரும் கட்டளைகள் மூலம் தொடங்கவும் நிறுத்தவும் செய்யலாம்:
root #
/etc/init.d/net.eth0 start
root #
/etc/init.d/net.eth0 stop
வலையமாக்கலைப் பழுது இடமறிதல் செய்யும்போது, /var/log/rc.log ஐ சற்று பார்வையிடவும். /etc/rc.conf கோப்பில் rc_logger மாறிக்கு
NO
என அமைக்கும் வரை, துவக்கச் செயல்பாடுகளின் தகவல்கள் எல்லாம் இந்த குறிப்புப்பதிவு கோப்பில் சேமித்து வைக்கப்படும்.இப்போது வலையமைப்பு இடைமுகம் வெற்றிகரமாக நிறுத்தித் தொடங்கப்பட்டது, இதற்கு அடுத்த படியாக சென்டூ துவங்கும்போது இதைத் தொடங்க வேண்டும். இதை எவ்வாறு செய்வது என்பதை இங்குக் காண்போம்:
root #
rc-update add net.eth0 default
root #
rc
இறுதி rc கட்டளை இன்னும் தொடங்கப்படாத ஏதாவது ஒரு குறுநிரலை இப்போதைய ஓடுநிலையில் துவக்க சென்டூவிற்கு அறிவுறுத்துகிறது.
மேம்பட்ட உள்ளமைவு
config_eth0 மாறியானது இடைமுக உள்ளமைவின் நெஞ்சாங்குலையாகும். இது இடைமுகத்தை உள்ளமைப்பதற்கான (இந்த வழக்கில் eth0) உயர் நிலை வழிகாட்டுதல் பட்டியலாகும். இந்த வழிகாட்டுதல் பட்டியலில் உள்ள ஒவ்வொரு கட்டளையும் வரிசை முறையில் செயல்படுத்தும். குறைந்தது ஒரு கட்டளையாவது வேளை செய்தாலும் இடைமுகம் சரியானதாகக் கருதப்படும்.
உள்ளமைக்கப்பட்ட வழிகாட்டுதல்களின் பட்டியல் இதோ:
மதிப்பு | விளக்கம் |
---|---|
null
|
எதையும் செய்யாது. |
noop
|
இடைமுகம் இயங்குநிலையில் இருந்து, அதற்கு ஒரு முகவரி இருந்தால், உள்ளமைவை வெற்றிகரமாக நிறுத்தும். |
IPv4 அல்லது IPv6 முகவரி | முகவரியை இடைமுகத்தில் சேர்க்கும். |
dhcp , adsl அல்லது apipa (அல்லது மூன்றாம் தரப்பு கூறு மூலம் வரும் ஒரு விருப்பிற்கேற்ப மதிப்பு)
|
கட்டளையை அளிக்கும் கூறை இயக்குகிறது. எடுத்துக்காட்டாக dhcp ஆனது dhcpcd, dhclient அல்லது pump ஆல் அணுகக்கூடிய DHCP ஐ அளிக்கும் கூறை இயக்கும்.
|
கட்டளை தோல்வியடைந்தால், பின்சார்தல் மதிப்பைக் குறிப்பிடவும். பின்சார்தல் ஆனது உள்ளமைவு கட்டுமானத்தோடு மிகச்சரியாகப் பொருந்த வேண்டும்.
இந்த மதிப்புகளை ஒன்றாக இணைக்க வாய்ப்புள்ளது. இதற்கான சில எடுத்துக்காட்டுகளை இங்குக் காணலாம்:
# மூன்று 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 அமைப்பை வரையறுத்தல் இதற்கான தீர்வாகும்:
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:
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:
# இது வேலை செய்தாலும் இந்த களம் ஒத்துக்கொள்ளமுடியாததாகும்
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).
வலையமைப்பு கூறுகள்
Netifrc supports modular networking scripts, which means support for new interface types and configuration modules can easily be added while keeping compatibility with existing ones.
Modules load by default if the package they need is installed. If users specify a module here that doesn't have its package installed then they get an error stating which package they need to install. Ideally, the modules setting is only used when two or more packages are installed that supply the same service and one needs to be preferred over the other.
All settings discussed here are stored in /etc/conf.d/net unless otherwise specified.
# Prefer ifconfig over iproute2
# modules="ifconfig"
# You can also specify other modules for an interface
# In this case we prefer dhclient over dhcpcd
modules_eth0="dhclient"
# You can also specify which modules not to use - for example you may be
# using a supplicant or linux-wlan-ng to control wireless configuration but
# you still want to configure network settings per ESSID associated with.
modules="!iwconfig"
இடைமுக கையாளு நிரல்கள்
We provide two interface handlers: ifconfig and iproute2. You need one of these to do any kind of network configuration.
Both are installed by default as part of the system profile. iproute2 is the more powerful and flexible package. ifconfig and net-tools should not be used anymore for networking configuration setups.
As iproute2 and ifconfig do very similar things, we allow their basic configuration to work with each other. For example, the below configuration works regardless of the module used.
config_eth0="192.168.0.2/24"
config_eth0="192.168.0.2 netmask 255.255.255.0"
DHCP
DHCP is a means of obtaining an IP address, together with other network information (DNS server(s), gateway, etc.) from a server. With a DHCP server running on a network, the user just has to tell each device to obtain configuration information via DHCP, which is then used to configure the device automatically. Of course, this requires a network connection (e.g. via a wireless access point, PPPoE, etc.).
DHCP can be provided by dhclient or dhcpcd. Each DHCP module has its pros and cons - here is a quick run down:
DHCP module | Package | Pros | Cons |
---|---|---|---|
dhclient | net-misc/dhcp | Made by ISC, the same people who make the BIND DNS software. Very configurable. Can be used to provide DHCPv4 or DHCPv6. | Configuration is overly complex, software is quite bloated, cannot get NTP servers from DHCP, does not send hostname by default. No longer maintained upstream. |
dhcpcd | net-misc/dhcpcd | Long time Gentoo default, no reliance on outside tools, actively developed by Gentoo. Provides DHCPv4 and DHCPv6 at the same time. | Can be slow at times, does not yet daemonize when lease is infinite. |
If more than one DHCP client is installed, it is possible to specify which client to use by setting the "modules" variable, e.g. modules="dhcpcd"
. Otherwise, if dhcpcd is installed, it's used by default.
To send specific options to the DHCP module, use module_eth0="...", where module is the name of the DHCP module being used - for example, "dhcpcd_eth0".
We try to make DHCP relatively agnostic - as such we support the following commands using the dhcp_eth0 variable. The default is not to set any of them:
release
- Releases the IP address for re-use.
nodns
- Don't overwrite /etc/resolv.conf
nontp
- Don't overwrite /etc/ntp.conf
nonis
- Don't overwrite /etc/yp.conf
# Only needed if more than one DHCP module is installed
modules="dhcpcd"
config_eth0="dhcp"
dhcpcd_eth0="-t 10" # Timeout after 10 seconds
dhcp_eth0="release nodns nontp nonis" # Only get an address
dhcpcd sends the current hostname to the DHCP server by default so this no longer needs to be specified.
# Only needed if more than one DHCP module is installed
modules="dhclient"
config_eth0="dhcpv6"
# To use both DHCPv4 and DHCPv6 on a dual-stack network, remove the above line and uncomment the following lines
#config_eth0="dhcp
#dhcpv6"
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
# To pass runtime arguments to dhclient for DHCPv6
dhclientv6_eth0="-t 10" # Timeout after 10 seconds
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
# Set generic DHCPv6 options
dhcpv6_eth0="release nodns nontp nonis nogateway nosendhost"
PPPoE/PPPoA உடன் ADSL
முதலில் ADSL மென்பொருளை நிறுவவும்:
root #
emerge --ask net-dialup/ppp
அடுத்து, PPP வலை குறுநிரல் மற்றும் PPP ஆல் பயன்படுத்தப்படும் ஈத்தர்வலை இடைமுகத்திற்கான வலை குறுநிரல் ஆகியவற்றை உருவாக்கவும்:
root #
ln -s /etc/init.d/net.lo /etc/init.d/net.ppp0
root #
ln -s /etc/init.d/net.lo /etc/init.d/net.eth0
/etc/rc.conf இல் rc_depend_strict என்னும் மாறிக்கு YES
என அமைப்பதை உறுதிசெய்து கொள்ளவும்.
இப்போது நாம் /etc/conf.d/net ஐ உள்ளமைக்க வேண்டும்.
config_eth0=null (ஈத்தர்வலை இடைமுகத்தை குறிப்பிடவும்)
config_ppp0="ppp"
link_ppp0="eth0" (ஈத்தர்வலை இடைமுகத்தை குறிப்பிடவும்)
plugins_ppp0="pppoe"
username_ppp0='user'
password_ppp0='password'
pppd_ppp0="
noauth
defaultroute
usepeerdns
holdoff 3
child-timeout 60
lcp-echo-interval 15
lcp-echo-failure 3
noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp"
rc_net_ppp0_need="net.eth0"
/etc/ppp/pap-secrets இனுள் கடவுச்சொல்லை அமைக்கவும் வாய்ப்புள்ளது.
# இதில் * என்னும் குறி முக்கியமானது
"பயனர்பெயர்" * "கடவுச்சொல்"
If PPPoE is used with a USB modem then make sure to emerge br2684ctl. Please read /var/db/repos/gentoo/net-dialup/speedtouch-usb/files/README for information on how to properly configure it.
Please carefully read the section on ADSL and PPP in /usr/share/doc/netifrc-*/net.example.bz2. It contains many more detailed explanations of all the settings any particular PPP setup will likely need.
APIPA (தானியக்க தனியார் IP முகவரியாக்கம்)
APIPA tries to find a free address in the range 169.254.0.0-169.254.255.255 by using arping to ping a random address in that range on the interface. If no reply is received, that address is assigned to the interface.
This is only useful for LANs where:
- there is no DHCP server;
- the system doesn't connect directly to the Internet; and
- all other computers use APIPA.
For APIPA support, emerge net-misc/iputils with the arping
USE flag or net-analyzer/arping.
# Try DHCP first - if that fails then fallback to APIPA
config_eth0="dhcp"
fallback_eth0="apipa"
# Just use APIPA
config_eth0="apipa"
பிணைத்தல்
Bonding is used to increase network bandwidth or to improve resiliency in the face of hardware failures. If a system has two network cards going to the same network, they can be bonded: applications will see just one interface, but both network cards will be used.
There are many ways to configure bonding. Some of them, such as the 802.3ad LACP mode, require support and additional configuration of the network switch. For a reference of the individual options, please refer to the local copy of /usr/src/linux/Documentation/networking/bonding.txt.
First, clear the configuration of the participating interfaces:
config_eth0="null"
config_eth1="null"
config_eth2="null"
Next, define the bonding between the interfaces:
slaves_bond0="eth0 eth1 eth2"
config_bond0="192.168.100.4/24"
# Pick a correct mode and additional configuration options which suit your needs
mode_bond0="balance-alb"
Remove the net.eth* services from the relevant runlevel, create a net.bond0 service, and add that service to the appropriate runlevel.
== பாலமிடல் (802.1d கான ஆதரவு)
Bridging is used to join networks together. For example, a network may have a server that connects to the Internet via an ADSL modem, and also has a wireless adapter to allow other devices on the network to access the Internet via that modem. It is possible to create a bridge to join the two interfaces together.
# Configure the bridge - "man brctl" for more details
bridge_forward_delay_br0=0
bridge_hello_time_br0=200
bridge_stp_state_br0=1
# To add ports to bridge br0
bridge_br0="eth0 eth1"
# You need to configure the ports to null values so dhcp does not get started
config_eth0="null"
config_eth1="null"
# Finally give the bridge an address - you could use DHCP as well
config_br0="192.168.0.1/24"
# Depend on eth0 and eth1 as they may require extra configuration
rc_net_br0_need="net.eth0 net.eth1"
For using some bridge setups, consult the variable name documentation.
When bridging using IPv6, SLAAC requires STP to be set to
1
as seen in the example above.MAC முகவரி
It is possible to change the MAC address of the interfaces through the network configuration file too.
# To set the MAC address of the interface
mac_eth0="00:11:22:33:44:55"
# To randomize the last 3 bytes only
mac_eth0="random-ending"
# To randomize between the same physical type of connection (e.g. fibre,
# copper, wireless) , all vendors
mac_eth0="random-samekind"
# To randomize between any physical type of connection (e.g. fibre, copper,
# wireless) , all vendors
mac_eth0="random-anykind"
# Full randomization - WARNING: some MAC addresses generated by this may
# NOT act as expected
mac_eth0="random-full"
குடைவுவழியாக்கல்
Tunneling does not require any additional software to be installed as the interface handler can do it.
# For GRE tunnels
iptunnel_vpn0="mode gre remote 207.170.82.1 key 0xffffffff ttl 255"
# For IPIP tunnels
iptunnel_vpn0="mode ipip remote 207.170.82.2 ttl 255"
# To configure the interface
config_vpn0="192.168.0.2 peer 192.168.1.1"
VLAN (802.1q கான ஆதரவு)
VLAN ற்கான ஆதரவிற்கு, sys-apps/iproute2 தொகுப்பு நிறுவப்பட்டிருக்கிறதா என்பதை சரிபார்த்துக்கொள்ளவும். மேலும் உள்ளமைவு கூறிற்கு ifconfig ற்கு பதிலாக iproute2 பயன்படுத்தப்பட்டுள்ளதா என்பதை உறுதிப்படுத்திக்கொள்ளவும்.
A VLAN, Virtual LAN, is a group of network devices that behave as if they were connected to a single network segment, even though they may not be. Members of a VLAN can only see other members of the same VLAN, even when they share the same physical network.
To configure VLANs, first specify the VLAN numbers in /etc/conf.d/net like so:
vlans_eth0="1 2"
அடுத்து, ஒவ்வொரு VLAN ற்கும் இடைமுகத்தை உள்ளமைக்கவும்:
config_eth0_1="172.16.3.1 netmask 255.255.254.0"
routes_eth0_1="default via 172.16.3.254"
config_eth0_2="172.16.2.1 netmask 255.255.254.0"
routes_eth0_2="default via 172.16.2.254"
VLAN சார்ந்த உள்ளமைவுகள் vconfig ஆல் இதைப்போல் கையாளப்படுகிறது:
vlan1_name="vlan1"
vlan1_ingress="2:6 3:5"
eth0_vlan1_egress="1:2"
சில VLAN அமைவுகளைப் பயன்படுத்துவதற்கு, மாறி பெயர் ஆவணப்படுத்தலைப் பார்வையிடவும்.
முன்னுரை
Wireless networking on Linux is usually pretty straightforward. There are three ways of configuring wifi: graphical clients, text-mode interfaces, and command-line interfaces.
பணித்தள சூழல் நிறுவப்பட்டவுடன் ஒரு வரைகலை வாங்கியைப் பயன்படுத்துவது எளிமையான வழியாகும். NetworkManager போன்ற பெரும்பாலான வரைகலை வாங்கிகளானது பயனர்கள் தாங்களாகப் பொருளுணர்ந்து கொள்ளக் கூடியவை. இவை சுட்டிக்காட்டி-சொடுக்கல் இடைமுகத்தைப் பயனர்களுக்கு அளித்து சில வினாடிகளில் வலையமைப்போடு இணைக்க வழிவகை செய்கிறது.
NetworkManager offers text-mode or command-line interface utilities in addition to the main graphical interface. Emerge the net-misc/networkmanager package with the
tools
USE flag enabled. The nmtui utility is particularly useful for folks who do not use a X or Wayland based desktop environment, but still desire an easy-to-use tool that does not require hand-editing configuration files.Wireless can also be configured from the command line by editing a few configuration files. This takes a bit more time to setup, but it also requires the fewest packages to download and install. Since the graphical clients are mostly self-explanatory (with helpful screen shots at their home pages), we'll focus on the command line alternatives.
There are three tools that support command-line driven wireless configurations: net-wireless/iw, net-wireless/wireless-tools, and net-wireless/wpa_supplicant. Of these three, net-wireless/wpa_supplicant is the preferred one. The important thing to remember is that wireless networks are configured on a global basis and not an interface basis.
The net-wireless/iw software, the successor of net-wireless/wireless-tools, supports nearly all cards and drivers, but it cannot connect to WPA-only Access Points. If the networks only offer WEP encryption or are completely open, then net-wireless/iw beats the other package over simplicity.
Some wireless cards are deactivated by default. To activate them, please consult the hardware documentation. Some of these cards can be unblocked using the rfkill application. If that is the case, use rfkill list to see the available cards and rfkill unblock INDEX to activate the wireless functionality. If not, then the wireless card might need to be unlocked through a button, switch or special key combination on the laptop.
WPA supplicant
WPA supplicant செயற்றிட்டமானது WPA செயல்படுத்தப்பட்டுள்ள அணுகல் புள்ளிகளுடன் இணைக்கப் பயனர்களை அனுமதிக்கும் தொகுப்பை அளிக்கிறது.
root #
emerge --ask net-wireless/wpa_supplicant
wpa_supplicant வேலை செய்வதற்கு கருநிரலில் உள்ள CONFIG_PACKET ஐ செயல்படுத்துவது இன்றியமையாதது. இப்போதைய கருநிரலில் செயல்படுத்தப்பட்டுள்ளதா என்பதைக் காண்பதற்கு, இதைச் செய்யவும்:
root #
zgrep CONFIG_PACKET /proc/config.gz
root #
grep CONFIG_PACKET /usr/src/linux/.config
Depending on the USE flags, wpa_supplicant can install a graphical interface written in Qt5, which will integrate nicely with KDE. To get it, enable
USE="qt5"
for the net-wireless/wpa_supplicant package.Next, configure /etc/conf.d/net so that the wpa_supplicant module is preferred over wireless-tools (if both are installed, wireless-tools is the default).
# கம்பியில்லா-கருவிகளுக்குப் பதிலாக wpa_supplicant ஐ பயன்படுத்துதல்
modules="wpa_supplicant"
When using the host-ap driver it is necessary to put the card in Managed mode before it can be used with wpa_supplicant correctly. This can be achieved by setting
iwconfig_eth0="mode managed"
in /etc/conf.d/net.Next configure wpa_supplicant itself (which is a bit more tricky depending on how secure the Access Points are). The below example is taken and simplified from /usr/share/doc/wpa_supplicant-<version>/wpa_supplicant.conf.gz which ships with wpa_supplicant.
# The below line not be changed otherwise wpa_supplicant refuses to work
ctrl_interface=/var/run/wpa_supplicant
# Ensure that only root can read the WPA configuration
ctrl_interface_group=0
# Let wpa_supplicant take care of scanning and AP selection
ap_scan=1
# Simple case: WPA-PSK, PSK as an ASCII passphrase, allow all valid ciphers
network={
ssid="simple"
psk="very secret passphrase"
# The higher the priority the sooner we are matched
priority=5
}
# Same as previous, but request SSID-specific scanning (for APs that reject
# broadcast SSID)
network={
ssid="second ssid"
scan_ssid=1
psk="very secret passphrase"
priority=2
}
# Only WPA-PSK is used. Any valid cipher combination is accepted
network={
ssid="example"
proto=WPA
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP WEP104 WEP40
psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb
priority=2
}
# Plaintext connection (no WPA, no IEEE 802.1X)
network={
ssid="plaintext-test"
key_mgmt=NONE
}
# Shared WEP key connection (no WPA, no IEEE 802.1X)
network={
ssid="static-wep-test"
key_mgmt=NONE
# Keys in quotes are ASCII keys
wep_key0="abcde"
# Keys specified without quotes are hex keys
wep_key1=0102030405
wep_key2="1234567890123"
wep_tx_keyidx=0
priority=5
}
# Shared WEP key connection (no WPA, no IEEE 802.1X) using Shared Key
# IEEE 802.11 authentication
network={
ssid="static-wep-test2"
key_mgmt=NONE
wep_key0="abcde"
wep_key1=0102030405
wep_key2="1234567890123"
wep_tx_keyidx=0
priority=5
auth_alg=SHARED
}
# IBSS/ad-hoc network with WPA-None/TKIP
network={
ssid="test adhoc"
mode=1
proto=WPA
key_mgmt=WPA-NONE
pairwise=NONE
group=TKIP
psk="secret passphrase"
}
கம்பியில்லா கருவிகள்
முதல் முறை நிறுவல் மற்றும் மேலாண்மை பயன்முறை
The wireless tools project provides a generic way to configure basic wireless interfaces up to the WEP security level. While WEP is a weak security method it's still prevalent in the world.
Wireless tools configuration is controlled by a few main variables. The sample configuration file below should describe all that is needed. One thing to bear in mind is that no configuration means "connect to the strongest unencrypted Access Point" - wireless tools will always try and connect the system to something.
root #
emerge --ask net-wireless/wireless-tools
Although net-wireless/iw is the current tool for the wireless stack, net-misc/netifrc before version 0.6.0 does not work with the new commands. net-wireless/wireless-tools must be used with netifrc with earlier versions. For more information consult the variable name documentation.
# Prefer iwconfig over wpa_supplicant
modules="iwconfig"
# Configure WEP keys for Access Points called ESSID1 and ESSID2
# You may configure up to 4 WEP keys, but only 1 can be active at
# any time so we supply a default index of [1] to set key [1] and then
# again afterwards to change the active key to [1]
# We do this incase you define other ESSID's to use WEP keys other than 1
#
# Prefixing the key with s: means it's an ASCII key, otherwise a HEX key
#
# enc open specified open security (most secure)
# enc restricted specified restricted security (least secure)
key_ESSID1="[1] s:yourkeyhere key [1] enc open"
key_ESSID2="[1] aaaa-bbbb-cccc-dd key [1] enc restricted"
# The below only work when we scan for available Access Points
# Sometimes more than one Access Point is visible so we need to
# define a preferred order to connect in
preferred_aps="'ESSID1' 'ESSID2'"
AP தேர்ந்தெடுத்தலை நுண் இசைவித்தல்
AP தேர்ந்தெடுத்தலை நுண் இசைவிப்பதற்கு சில கூடுதல் விருப்பத்தேர்வுகளைச் சேர்க்க இயலும், இருப்பினும் இவை தேவையில்லை.
One way is to configure the system so it only connects to preferred APs. By default if everything configured has failed and wireless-tools can connect to an unencrypted Access Point then it will. This can be controlled by the associate_order variable. Here's a table of values and how they control this.
மதிப்பு | விளக்கம் |
---|---|
any | முன்னிருப்பு நடத்தை. |
preferredonly | விருப்ப பட்டியலில் உள்ள புலப்படும் AP களோடு மட்டும் இணைக்கும். |
forcepreferred | விருப்ப பட்டியலில் உள்ள AP கள் வருடலில் தென்படவில்லை என்றாலும் அவற்றோடு கட்டாயமாக இணைக்கும். |
forcepreferredonly | Do not scan for APs - instead just try to connect to each one in order. |
forceany | Same as forcepreferred + connect to any other available AP. |
There is also the blacklist_aps and unique_ap selection. blacklist_aps works in a similar way to preferred_aps. unique_ap is a yes or no value that says if a second wireless interface can connect to the same Access Point as the first interface.
# Sometimes you never want to connect to certain access points
blacklist_aps="'ESSID3' 'ESSID4'"
# If you have more than one wireless card, you can say if you want
# to allow each card to associate with the same Access Point or not
# Values are "yes" and "no"
# Default is "yes"
unique_ap="yes"
Ad-hoc மற்றும் master பயன்முறைகள்
To set the system up as an ad-hoc node when it fails to connect to any Access Point in managed mode, use this as a fallback:
adhoc_essid_eth0="This Adhoc Node"
It is also possible to connect to ad-hoc networks, or to run the system in master mode so it becomes an access point itself.
# Set the mode - can be managed (default), ad-hoc or master
# Not all drivers support all modes
mode_eth0="ad-hoc"
# Set the ESSID of the interface
# In managed mode, this forces the interface to try and connect to the
# specified ESSID and nothing else
essid_eth0="This Adhoc Node"
# We use channel 3 if you don't specify one
channel_eth0="9"
An important resource about channel selection is the BSD wavelan documentation found at the NetBSD documentation. There are 14 channels possible; We are told that channels 1-11 are legal for North America, channels 1-13 for most of Europe, channels 10-13 for France, and only channel 14 for Japan. If in doubt, please refer to the documentation that came with the card or access point. Make sure that the channel selected is the same channel the access point (or the other card in an ad-hoc network) is on. The default for cards sold in North America and most of Europe is 3; the default for cards sold in France is 11, and the default for cards sold in Japan is 14.
கம்பியில்லா கருவிகளை பழுது இடமறிதல்
There are some more variables that can help to get the wireless up and running due to driver or environment problems. Here's a table of other things that can be tried.
மாறி பெயர் | முன்னிருப்பு மதிப்பு | விளக்கம் |
---|---|---|
iwconfig_eth0 | iwconfig என்ன அனுப்ப வேண்டும் பற்றிய மேலும் விவரங்களுக்கு iwconfig இன் கைமுறை பக்கத்தைக் காணவும். | |
iwpriv_eth0 | iwpriv என்ன அனுப்ப வேண்டும் பற்றிய மேலும் விவரங்களுக்கு iwconfig இன் கைமுறை பக்கத்தைக் காணவும். | |
sleep_scan_eth0 | 0 | வருடல் செய்ய முயற்சி செய்வதற்கு முன் உறக்க நிலையில் இருப்பதற்கான வினாடிகளின் எண்ணிக்கை. இயக்கி/திடப்பொருள் பயன்பாட்டிற்கு வருவதற்கு முன் செயல்பாட்டிற்கு வர அதிக நேரம் எடுத்துக்கொள்ளும்போது இது தேவைப்படும். |
sleep_associate_eth0 | 5 | இடைமுகமானது அடுத்துள்ள ஒன்றிற்குச் செல்வதற்கு முன் அணுகல் புள்ளியோடு தொடர்புகொள்வதற்காகக் காத்திருப்பதற்கான வினாடிகளின் எண்ணிக்கை. |
associate_test_eth0 | MAC | சில இயக்கிகள், தொடர்புகொள்வதில் தோல்வி அடையும்போது அல்லது முயலும்போது, செல்லுபடியற்ற தோடு கூட்டாக உள்ள MAC முகவரிகளை மீள் அமைப்பதில்லை. மேலும் சில இயக்கிகள், கூட்டாக்குவதில் தோல்வி அடையும்போது அல்லது முயலும்போது தர அளவை மீள் அமைப்பதில்லை. MAC, quality மற்றும் all முதலியவை செல்லுபடியாகக்கூடிய அமைப்புகளாகும். |
scan_mode_eth0 | சில இயக்கிகள் ad-hoc பயன்முறையில் வருடல் செய்ய வேண்டும். இதன் மூலம் வருடல் தோல்வியடைந்தால் இங்கு ad-hoc ஐ அமைக்கலாம். | |
iwpriv_scan_pre_eth0 | வருடல் செய்வதற்கு முன் சில iwpriv கட்டளைகளை இடைமுகத்திற்கு அனுப்புகிறது. மேலும் விவரங்களுக்கு iwpriv இன் கைமுறை பக்கத்தைக் காணவும். | |
iwpriv_scan_post_eth0 | வருடல் செய்த பின் சில iwpriv கட்டளைகளை இடைமுகத்திற்கு அனுப்புகிறது. மேலும் விவரங்களுக்கு iwpriv இன் கைமுறை பக்கத்தைக் காணவும். |
ஒவ்வொரு ESSID க்கும் வலையமைப்பு உள்ளமைவை வரையறுத்தல்
In this section, we show how to configure network settings based on the ESSID. For instance, with the wireless network with ESSID ESSID1 configure a static IP address while ESSID ESSID2 uses DHCP.
இது wpa_supplicant மற்றும் wireless-tools ஆகிய இவ்விரண்டு உடன் வேலை செய்யும்
மாறி பெயர் ஆவணப்படுத்தலை அணுகவும்.
config_ESSID1="192.168.0.3/24 brd 192.168.0.255"
routes_ESSID1="default via 192.168.0.1"
config_ESSID2="dhcp"
fallback_ESSID2="192.168.3.4/24"
fallback_route_ESSID2="default via 192.168.3.1"
# பெயர் சேவையகங்கள் மற்றும் பலவற்றை கூட நாம் இங்கு வரையறுக்கலாம்
# குறிப்பு: வேண்டாம் என கூறும் வரை DHCP ஆனது இதை மேலெழுதும்
dns_servers_ESSID1="192.168.0.1 192.168.0.2"
dns_domain_ESSID1="some.domain"
dns_search_domains_ESSID1="search.this.domain search.that.domain"
# நீங்கள் அணுகல் புள்ளியின் MAC முகவரி மூலம் மேலெழுதலாம்
# ஒரே ESSID உள்ள வெவ்வேறு இடங்களுக்கு நீங்கள் செல்லும்போது
# இது மிகவும் பயனுள்ளதாக இருக்கும்
config_001122334455="dhcp"
dhcpcd_001122334455="-t 10"
dns_servers_001122334455="192.168.0.1 192.168.0.2"
Standard function hooks
Four functions can be defined in /etc/conf.d/net:
preup()
, called before an interface is brought up;predown()
, called before an interface is brought down;postup()
, called after an interface is brought up; andpostdown()
, called after an interface is brought down.
Each of these these functions is called with the interface name, available within each function via the IFACE variable, so that one function can control multiple interfaces.
The return values for the preup()
and predown()
functions should be:
- 0 to indicate success, and that configuration or de-configuration of the interface can continue.
- A non-zero value otherwise.
If preup()
returns a non-zero value, interface configuration will be aborted. If predown()
returns a non-zero value, the interface will not be allowed to continue de-configuration.
Return values for the postup()
and postdown()
functions are ignored since there's nothing to do if they indicate failure.
${IFACE} is set to the interface being brought up/down. ${IFVAR} is ${IFACE} converted to variable name bash allows.
preup() {
# Test for link on the interface prior to bringing it up. This
# only works on some network adapters and requires the ethtool
# package to be installed.
if ethtool ${IFACE} | grep -q 'Link detected: no'; then
ewarn "No link on ${IFACE}, aborting configuration"
return 1
fi
# Remember to return 0 on success
return 0
}
predown() {
# The default in the script is to test for NFS root and disallow
# downing interfaces in that case. Note that if you specify a
# predown() function you will override that logic. Here it is, in
# case you still want it...
if is_net_fs /; then
eerror "root filesystem is network mounted -- can't stop ${IFACE}"
return 1
fi
# Remember to return 0 on success
return 0
}
postup() {
# This function could be used, for example, to register with a
# dynamic DNS service. Another possibility would be to
# send/receive mail once the interface is brought up.
return 0
}
postdown() {
# This function is mostly here for completeness... I haven't
# thought of anything nifty to do with it yet ;-)
return 0
}
For more information on writing functions, please read /usr/share/doc/netifrc-*/net.example.bz2.
Wireless function hooks
This will not work with WPA Supplicant - but the ${ESSID} and ${ESSIDVAR} variables are available in the
postup()
function.Two functions can be defined in /etc/conf.d/net:
preassociate()
, called before association.postassociate()
, called after association.
Each of these these functions is called with the interface name, available within each function via the IFACE variable, so that one function can control multiple interfaces.
The return values for the preassociate() function should be:
- 0 to indicate success, and to continue configuration.
- A non-zero value otherwise.
If preassociate()
returns a non-zero value, interface configuration will be aborted.
The return value for the postassociate()
function is ignored since there's nothing to do if it indicates failure.
Within each function, the exact ESSID of the AP the system is connecting to is available via the ESSID variable. ${ESSIDVAR} is ${ESSID} converted to a variable name bash allows.
preassociate() {
# The below adds two configuration variables leap_user_ESSID
# and leap_pass_ESSID. When they are both configured for the ESSID
# being connected to then we run the CISCO LEAP script
local user pass
eval user=\"\$\{leap_user_${ESSIDVAR}\}\"
eval pass=\"\$\{leap_pass_${ESSIDVAR}\}\"
if [[ -n ${user} && -n ${pass} ]]; then
if [[ ! -x /opt/cisco/bin/leapscript ]]; then
eend "For LEAP support, please emerge net-misc/cisco-aironet-client-utils"
return 1
fi
einfo "Waiting for LEAP Authentication on \"${ESSID//\\\\//}\""
if /opt/cisco/bin/leapscript ${user} ${pass} | grep -q 'Login incorrect'; then
ewarn "Login Failed for ${user}"
return 1
fi
fi
return 0
}
postassociate() {
# This function is mostly here for completeness... I haven't
# thought of anything nifty to do with it yet ;-)
return 0
}
${ESSID} and ${ESSIDVAR} are unavailable in
predown()
and postdown()
functions.For more information on writing custom functions, please read /usr/share/doc/netifrc-*/net.example.bz2.
Network management
With laptops, systems can be always on the move. As a result, the system may not always have an Ethernet cable or plugged in or an access point available. Also, the user may want networking to automatically work when an Ethernet cable is plugged in or an access point is found.
In this chapter, we cover how this can be done.
This document only talks about ifplugd, but there are alternatives such as netplug. netplug is a lightweight alternative to ifplugd, but it relies on the kernel network drivers working correctly, and many drivers do not.
ifplugd
ifplugd is a daemon that starts and stops interfaces when an Ethernet cable is inserted or removed. It can also manage detecting association to Access Points or when new ones come in range.
root #
emerge --ask sys-apps/ifplugd
Configuration for ifplugd is fairly straightforward too. The configuration is held in /etc/conf.d/net. Run man ifplugd for details on the available variables. Also, see /usr/share/doc/netifrc-*/net.example.bz2 for more examples.
# Replace eth0 with the interface to be monitored
ifplugd_eth0="..."
# To monitor a wireless interface
ifplugd_eth0="--api-mode=wlan"
In addition to managing multiple network connections, users may want to add a tool that makes it easy to work with multiple DNS servers and configurations. This is very handy when the system receives its IP address via DHCP.
root #
emerge --ask net-dns/openresolv
See man resolvconf to learn more about its features.