Those of us who are unfortunate enough to rely on Comcast for broadband speed over 6Mbit have to deal with their nonsense policies from time to time. Well, one of those policies seems to be that they want to set our MTU to 576 bytes; breaking many network connections due to its ridiculously low size.
Code:
[root@maximus]$ /etc/rc.d/rc.inet1 eth0_restart
Polling for DHCP server on interface eth0:
dhcpcd: version 5.2.2 starting
dhcpcd: eth0: broadcasting for a lease
dhcpcd: eth0: offered 76.102.X.X from 68.87.X.X
dhcpcd: eth0: acknowledged 76.102.X.X from 68.87.X.X
dhcpcd: eth0: checking for 76.102.X.X
dhcpcd: eth0: leased 76.102.X.X for 3600 seconds
dhcpcd: eth0: MTU set to 576
dhcpcd: forking to background
In order to set my MTU to a reasonable value (1500), I attempted to use
MTU[0]=1500 in rc.inet1.conf. However, I quickly learned this was not a valid solution since the check for MTU[$i] is called *before* the check for DHCP and thus my specified value is promptly overridden by my MTU-setting DHCP server.
I see two possible solutions for this problem by slightly altering rc.inet1:
1) Move the
if [ ! "${MTU[$i]}" = "" ]; stanza all the way down, right before the
else in
else if [ "$DEBUG_ETH_UP" = "yes" ]. This way my user-defined setting will override the DHCP issued MTU, not the other way around as it currently stands.
2) Add
[ "${DHCP_KEEPMTU[$i]}" = "yes" ] && DHCP_OPTIONS="$DHCP_OPTIONS -C mtu" to the list of DHCP option checks, much like you do for $DHCP_KEEPRESOLV.
Option #1 is 'cleaner' in that it doesn't require an extra variable, such as $DHCP_KEEPMTU, to achieve the desired effect. However, option #2 is more inline with how we currently tweak DHCP.
P.S.
A google for "comcast mtu 576" brings up many hits so it is not a problem with my configuration nor does it appear to be localized to my area.