公司從聯通搞了一個靜態IP地址作為服務器的ip。樓主小白,遇到了一些問題:
1、如何配置網路?
拿到聯通給的ip地址,子網掩碼,網關之后,網線沒經過路由器什么的,直接連在了linux主機上,在linux進行了靜態ip配置。
不知道這么做對不對?
2、按照上面的方法配置后,服務器可以上網了,但是通過靜態ip其他電腦訪問不到這臺服務器
是不是直接網線連接到主機上,還是要有個路由器?
外部電腦ping 這個主機的地址,無法訪問目標主機。
我應該怎么正確配置網路?
uj5u.com熱心網友回復:
一般不推薦把服務器直接扔外網。外網——路由器——交換機——辦公網路/服務器
然后在路由器上,做映射:訪問公網地址的80埠,轉到服務器局域網IP的web服務埠
并且,你的服務器需要設定防火墻(iptables或者firewalld)允許對web服務埠的訪問
另外,很重要的一點:你的設定都正確的情況下,很可能仍然無法訪問,這時候基本上是被聯通攔截掉80埠了,需要找他們放開一下80埠。驗證的方法很簡單,把web埠指到81,外網訪問81如果通,就是聯通攔截,外網訪問81仍然不通,就是你的設定問題。
uj5u.com熱心網友回復:
外網——路由器——交換機——辦公網路/服務器這么做外網訪問服務器的ip配置是動態還是靜態呢,這是不是就相當于服務器做一臺內網服務器使用了?
在外部訪問的時候,服務器web程式能正確獲取訪問服務端的客戶端ip嗎?
之前用這種方式,路由器分配給服務器一個固定的局域網地址,然后服務端做埠映射到內網服務器,會出現獲取不到客戶端ip的問題。所有訪問服務器的地址都是192.168.1.1
uj5u.com熱心網友回復:
我懷疑是你代碼的問題。把獲取服務器地址的代碼發一下看看呢uj5u.com熱心網友回復:
語言是php.訪問服務器會默認發送我用的php語言,向服務器發請求的時候會有$_SERVER傳到服務器。里面的$_SERVER['REMOTE_ADDR']是客戶端IP,但是這個ip是192.168.1.1。
這跟我代碼沒關系吧。
uj5u.com熱心網友回復:
$_SERVER不是由客戶端發到服務端的,而是服務端本身的服務器變數,存在于服務器。PHP獲取客戶端的遠程IP可以參考下面的代碼 function getIP() {
if (getenv('HTTP_CLIENT_IP')) {
$ip = getenv('HTTP_CLIENT_IP');
}
elseif (getenv('HTTP_X_FORWARDED_FOR')) {
$ip = getenv('HTTP_X_FORWARDED_FOR');
}
elseif (getenv('HTTP_X_FORWARDED')) {
$ip = getenv('HTTP_X_FORWARDED');
}
elseif (getenv('HTTP_FORWARDED_FOR')) {
$ip = getenv('HTTP_FORWARDED_FOR');
}
elseif (getenv('HTTP_FORWARDED')) {
$ip = getenv('HTTP_FORWARDED');
}
else {
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}
uj5u.com熱心網友回復:
你查看下你的Linux服務器的防火墻,是不是INPUT都給DROP掉了轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/109679.html
標籤:網絡維護與管理
上一篇:局域網內機器單向通訊
下一篇:Socket通信問題。
