Red Hat Bugzilla – Bug 27492
Can't connect to the ISP when I got 2 LAN interface
Last modified: 2007-04-18 12:31:27 EDT
From Bugzilla Helper:
User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)
My environment is:
Red Hat 6.2, pump 0.7.8, 0.8.3 and 0.8.8. (I read and test the
3 version code.)
The Linux system got 2 LAN interface. One used Fix IP address.
(ex. 192.168.0.1), the other used Dynamic. (DHCP client)
First of all, I brought up the "eth1" interface with Fix IP. -
Secondary, I run "ifup eth0" to trigger the "pump" program. But
it couldn't get an IP address from the DHCP Server. ( the ISP)
I capture the packets and found that the program will send "from
192.168.0.1 to 255.255.255.255" IP/UDP/DHCP packet. It's a broadcast
packet, the server should receive it. But the ISP won't response any
packet. Other Router or PC will send "from 0.0.0.0 to 255.255.255.255"
packet to get a legal IP address from this ISP.
I read the source of pump. It use "socket(AF_PACKET,
SOCKET_DGRAM, ntohs(ETH_P_IP))" and "sendto(....serverAddr..)".
The "sendto" function doesn't contain any source address field. I tried
several ways to change the source address. (bind, setsockopt, ...) But I
didn't succeed. It seems the low level code filled in the source IP
But as my opinion, the "eth0" didn't up or get any valid IP
address. It shouldn't send with the IP of eth1.(192.168.0.1) If the
interface hasn't been ready. It should use 0.0.0.0 as its source.
If I couldn't solve this problem, the customers of my company
would have no chance to connect the that ISP. (It's a big ISP in local.)
After several days trial, I still fail to change the field of source IP
Steps to Reproduce:
1. Set up your first LAN interface with Fix IP. Active it. run "ifup
eth1". (set /etc/sysconfig/network-scripts/ifcfg-eth1 with fix ip)
2. Active the second interface with DHCP cleint. run "ifup eth0".
(set /etc/sysconfig/network-scripts/ifcfg-eth0 with dhcp client, ONBOOT=no)
3. Couldn't get an IP from eth0. The ISP doesn't reply.
Actual Results: The ISP doesn't reply any packet to us.
The Linux couln't get an IP address from the ISP.
Expected Results: The eth0 should get a legal IP address from the ISP.
We set DHCP client and pump could get an IP address from other DHCP server.
We could get the IP address from most ISP. And if we got 1 LAN interface,
we could get the IP without problem.
I capture the LAN packets and compare it with other machine. (Other router
The only different is in the IP layer.
On Linux: Source: 192.168.0.1 Destination: 255.255.255.255
On Router: Source: 0.0.0.0 Destination: 255.255.255.255
Because the DHCP request packet should use "0.0.0.0 -> 255.255.255.255"
when the interface hasn't up and without any IP address. It shouldn't use
the IP address on another LAN interface as its source IP. (192.168.0.1)
The ISP is "@home" in the U.S..
The pump-0.8.8-1 RPM is ported from Red Hat 7.0 version to Red Hat 6.2 version
by me. It works well but still couldn't fix this problem.
*** This bug has been marked as a duplicate of 23052 ***