I have a rather complex network config, using 2 vlans on 2 bonded ethernet interface. I recently updated to the new baseconfig and found my network was broken. The fix is to install iproute2. Reproducible: Always Steps to Reproduce: 1. update an old system that has no iproute2 package installed 2. configure your interfaces like I did (bonded with vlans... see attached) 3. try to start net.bond0 Actual Results: I would see "adding slaves to bond0... eth0... null" and there it would stop. Expected Results: it should have continued on to put vlans on bond0 and set the IPs on the VLANs. OR given me an error OR the openrc package should REQUIRE iproute2. Reading through the openrc code, it looks like it simply won't work without it. here's my config: config_eth0="null" #Disable IP address on Interface config_eth1="null" #Disable IP address on Interface ## Setup Bonding Interface slaves_bond0="eth0 eth1" config_bond0="null" #Disable IP address on Interface miimon_bond0="100" mode_bond0="802.3ad" xmit_hash_policy="layer3+4" mtu_bond0="9000" rc_need_bond0="net.eth0 net.eth1" ## Setup Vlans vlans_bond0="10 12" vlan_start_bond0="yes" #vconfig_vlan10="set_flag 1" #Enable VLAN flag #vconfig_vlan12="set_flag 1" #Enable VLAN flag #vconfig_bond0="set_flag 1" #Enable VLAN flag #vconfig_bond0="set_name_type VLAN_PLUS_VID_NO_PAD" vlan10_name="vlan10" vlan12_name="vlan12" ## WAN VLan (vlan10) config_vlan10="X.X.X.X/23 X.X.X.X/23" routes_vlan10="X.X.X.X default via X.X.X.X" mtu_vlan10="1500" rc_need_vlan10="net.bond0" ## LAN VLan (vlan12) config_vlan12="10.60.1.1/17" routes_vlan12="10.0.0.0/8 via 10.60.127.254" mtu_vlan12="9000" rc_need_vlan12="net.bond0" ## Local Interface dns_domain_lo="c42" dns_servers_lo="10.60.127.254 10.10.42.1 8.8.8.8" dns_options_lo="timeout 2 rotate attempts 3"
Portage 2.1.10.11 (default/linux/amd64/10.0/server, gcc-4.5.3, glibc-2.12.2-r0, 2.6.39.1 x86_64) ================================================================= System uname: Linux-2.6.39.1-x86_64-Intel-R-_Core-TM-_i7-2677M_CPU_@_1.80GHz-with-gentoo-2.0.3 Timestamp of tree: Thu, 27 Oct 2011 07:00:01 +0000 app-shells/bash: 4.1_p9 dev-java/java-config: 2.1.11-r3 dev-lang/python: 2.6.5-r2, 2.7.1-r1, 3.1.3-r1 dev-util/pkgconfig: 0.26 sys-apps/baselayout: 2.0.3 sys-apps/openrc: 0.8.3-r1 sys-apps/sandbox: 2.4 sys-devel/autoconf: 2.68 sys-devel/automake: 1.11.1 sys-devel/binutils: 2.21.1-r1 sys-devel/gcc: 4.4.3-r2, 4.5.3-r1 sys-devel/gcc-config: 1.4.1-r1 sys-devel/libtool: 2.4-r1 sys-devel/make: 3.82-r1 sys-kernel/linux-headers: 2.6.39 (virtual/os-headers) sys-libs/glibc: 2.12.2 Repositories: gentoo code42 ACCEPT_KEYWORDS="amd64" ACCEPT_LICENSE="*" CBUILD="x86_64-pc-linux-gnu" CFLAGS="-Os -march=k8 -pipe" CHOST="x86_64-pc-linux-gnu" CONFIG_PROTECT="/etc" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/splash /etc/terminfo" CXXFLAGS="-Os -march=k8 -pipe" DISTDIR="/usr/portage/distfiles" FEATURES="assume-digests binpkg-logs distlocks ebuild-locks fixlafiles fixpackages news nodoc noinfo noman parallel-fetch protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch" FFLAGS="" GENTOO_MIRRORS="http://distfiles.gentoo.org" LANG="en_US.utf8" LC_ALL="en_US.utf8" LDFLAGS="-Wl,-O1 -Wl,--as-needed" LINGUAS="en en_US" MAKEOPTS="-j2" PKGDIR="/usr/portage/packages" PORTAGE_CONFIGROOT="/" PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/usr/local/portage" SYNC="rsync://image.crashplanpro.com/gentoo-portage" USE="acl acpi alsa amd64 berkdb bzip2 cli cracklib crypt cups cxx dbus dri fortran gdbm gpm hal iconv mmx modules mudflap multilib ncurses nls nptl nptlonly openmp pam pcre pppd readline session snmp sse sse2 ssl symlink sysfs tcpd truetype unicode xfce xml xorg zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="kexi words flow plan stage tables krita karbon braindump" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ubx" INPUT_DEVICES="evdev keyboard mouse vmmouse" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="en en_US" PHP_TARGETS="php5-3" RUBY_TARGETS="ruby18" USERLAND="GNU" VIDEO_CARDS="vmware vesa vga" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account" Unset: CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
So the issue is caused through config_bond0="null". The iproute2 interface handles it correctly.
actually... the null is interesting but that's not the only problem. With my configuration + openrc and no iproute2, the vlans just don't load. I can configure a static on bond0 instead of null and that's the only IP it uses... it never does the vlan stuff. Then I install iproute2, restart bond0 and I get my static on bond0 and the 2 IPs on the vlans like it should be.
Ah, I broke this because the new vlan stuff requires iproute2, whereas the old stuff used the vconfig tool and had bugs and stuff you couldn't do. A lot of the openrc network configuration stuff requires iproute2 now. new vlan, macvlan, RPDB, parts of tunnels, ipsec, ip6 neighbour (arp replacement) WilliamH: any objections to making it required?
I have no objection to making iproute2 required for linux. Along the same lines, I would like to suggest dropping ifconfig support for linux. Is that agreeable?
I want to look over what we have in git since 0.9.4 and determin if we need a new release before I start work on this.
(In reply to comment #5) > I have no objection to making iproute2 required for linux. Along the > same lines, I would like to suggest dropping ifconfig support for linux. > Is that agreeable? +1
basic network support should not require iproute2 (static addresses/routes). if we want to make it required for anything fancy (vlan/bounding/etc...), that's fine.
could you make the network stuff gripe about not having iproute2 installed if one is configuring vlans or something? It would just be nice to know why it's failing instead of simply... "null".
(In reply to comment #8) > basic network support should not require iproute2 (static addresses/routes). > if we want to make it required for anything fancy (vlan/bounding/etc...), > that's fine. Can you give more information than "iproute2 should not be required for basic network support"? Iproute2 supports basic network configuration and far more than ifconfig does. I don't think it makes sense to keep using ifconfig for basic network configuration since iproute2 can support basic configuration as well.
(In reply to comment #9) > could you make the network stuff gripe about not having iproute2 installed if > one is configuring vlans or something? It would just be nice to know why it's > failing instead of simply... "null". What I would like to do is drop the support for ifconfig, which will then make it possible for us to make iproute2 a hard dependency of openrc on linux systems. Once we do that, this issue will be solved, because all of our network support on linux will be handled by iproute2 instead of being split between ifconfig and iproute2.
i didn't say iproute2 can't do what we need. i'm saying that we still want to have an ifconfig module that can support basic network setup. static ips/routes are trivial to support.
I'd like to add that currently with baselayout-2 + openrc having ifconfig _and_ iproute2 installed the oldnet configuration scripts don't respect the modules="ifconfig" varibale. As soon as there's iproute2 installed on a system it's the only choice with oldnet scripts. This is contradictory to openrc's net.example documentation. I wonder if this is intentional or just a bug.
(In reply to comment #12) > i didn't say iproute2 can't do what we need. i'm saying that we still want to > have an ifconfig module that can support basic network setup. static > ips/routes are trivial to support. They are also trivial to support with iproute2, so I see no reason to keep the ifconfig module. (In reply to comment #13) > I'd like to add that currently with baselayout-2 + openrc having ifconfig _and_ > iproute2 installed the oldnet configuration scripts don't respect the > modules="ifconfig" varibale. As soon as there's iproute2 installed on a system > it's the only choice with oldnet scripts. > This is contradictory to openrc's net.example documentation. > I wonder if this is intentional or just a bug. Did you try modules="!iproute2" Openrc prefers iproute2 over ifconfig if iproute2 is installed.
(In reply to comment #14) > > Did you try > > modules="!iproute2" > > Openrc prefers iproute2 over ifconfig if iproute2 is installed. No I didn't. I gonna try that as soon as I have access to a testing machine. But according to the doc it should work with modules="ifconfig", too.
(In reply to comment #14) because net-tools (which provides ifconfig/route among other tools) is required in the system target. iproute2 is not. i suspect ifconfig is also more portable than iproute2 (availability in other operating systems).
(In reply to comment #16) > (In reply to comment #14) > > because net-tools (which provides ifconfig/route among other tools) is required > in the system target. iproute2 is not. Why does it matter whether or not something we depend on is required in the system target? We can just make it a dependency for openrc on linux systems. > i suspect ifconfig is also more portable than iproute2 (availability in other > operating systems). If we drop ifconfig support for linux it won't affect ifconfig on the bsds or any other operating system that needs it. We already have a separate ifconfig module for *BSD, and we could write another one if we need it for another operating system. I just want to remove the ifconfig module for linux and make iproute2 the only interface handler openrc uses on linux.
(In reply to comment #17) the point is to not add extra dependencies for the basics. iproute doesn't add anything special for static routes. i don't have a problem with requiring iproute for anything beyond the basics. but static mappings are ridiculously simple.
Instead of forcing iproute2, I've added a check for iproute2 in commit 415f48041 now, for the functionality that actually requires it (vlan, macvlan). This leaves the base ifconfig functionality for those users with simple setups. Future item: require iproute2 for all IPv6 configs?
for static IPv6 addresses/routes, i don't think that's necessary