networking differences with php file_get_contents under 6.1 and
7.2 ?
Olivier Mueller
om-lists-bsd at omx.ch
Tue Dec 15 13:05:25 UTC 2009
Hello,
I just observed a strange thing on 2 servers with a very similar setup
(apache config, php version/ini, virtual ip addresses, etc.) but under 2
different FreeBSD versions.
I would like to understand if is related to the OS version and why.
To test, I have a short php script which calls itselfs with
file_get_contents() : under 6.1 the source IP is the one from apache
virtual host, and under 7.2 it's the first interface from server : why
this difference? Is it a new feature/change in 7.x, or a bug(fix)?
If I do a request on an external server (like
http://crazzy.se/get_ip.php ) it always return the main server IP. Only
when I do the call locally and under 6.1 it's not the case...
Under 6.1 I get this output (scroll down for the script):
test1.example.com = virtual host under 10.0.0.239
main server ip = 10.0.0.210
------------------------------------------------------------
Initial call:
SERVER_ADDR: 10.0.0.239
REMOTE_ADDR: 10.0.0.12
calling... http://test1.example.com/iptest_om.php?recall=1
------------------------------------------------------------
Call from self:
SERVER_ADDR: 10.0.0.239
REMOTE_ADDR: 10.0.0.239 (client) <<<<====== ????
end
------------------------------------------------------------
end
ifconfig:
bce0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=3b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU>
inet6 fe80::218:feff:fe31:8ae4%bce0 prefixlen 64 scopeid 0x1
inet 10.0.0.210 netmask 0xffffff00 broadcast 10.0.0.255
inet 10.0.0.212 netmask 0xffffff00 broadcast 10.0.0.255
inet 10.0.0.239 netmask 0xffffff00 broadcast 10.0.0.255
and under 7.2: (test2.example.com = 10.0.0.122, main = .120)
------------------------------------------------------------
Initial call:
SERVER_ADDR: 10.0.0.122
REMOTE_ADDR: 10.0.0.12
calling... http://test2.example.com/iptest_om.php?recall=1
------------------------------------------------------------
Call from self:
SERVER_ADDR: 10.0.0.122
REMOTE_ADDR: 10.0.0.120 (client) <<====== ok
end
------------------------------------------------------------
end
ifconfig:
bce0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=1bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4>
ether 00:1f:29:06:9c:38
inet 10.0.0.120 netmask 0xffffff00 broadcast 10.0.0.255
inet 10.0.0.122 netmask 0xffffff00 broadcast 10.0.0.255
inet 10.0.0.123 netmask 0xffffff00 broadcast 10.0.0.255
test script:
<?php
if ($_GET["recall"] != 1) {
print "<hr>\n";
print "<b>Initial call:<br>\n";
print "SERVER_ADDR: " . $_SERVER["SERVER_ADDR"] . "<br>\n";
print "REMOTE_ADDR: " . $_SERVER["REMOTE_ADDR"] . "<br>\n";
print "<br>\n";
$url = "http://" . $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"] . "?recall=1";
print "calling... $url<br>\n";
print "<font color=blue>\n";
echo file_get_contents($url);
print "</font>\n";
print "<hr>\n";
}
if ($_GET["recall"] == 1) {
print "<hr>\n";
print "<b>Call from self:<br>\n";
print "SERVER_ADDR: " . $_SERVER["SERVER_ADDR"] . "<br>\n";
print "REMOTE_ADDR: " . $_SERVER["REMOTE_ADDR"] . " (client)<br>\n";
print "<br>\n";
print "\n";
}
print "end<br>\n";
?>
Thanks for any feedback & regards,
Olivier
More information about the freebsd-net
mailing list