使用靜態 IP 配置 2 個網卡,1 個連接到 Internet,1 個專用
我正在使用 2 個 nic 的伺服器中配置 CentOS 7 網路。網路介面是:
- em1應該通過 DHCP連接到本地
IP: 192.168.0.240
Gateway: 192.168.0.2
Masq.: 255.255.255.0
網路, .它的配置腳本是
/etc/sysconfig/network-scripts/ifcfg-em1
:TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="dhcp" DEFROUTE="yes" IPV4_FAILURE_FATAL="yes" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="em1" DEVICE="em1" ONBOOT="yes" IPV6_PRIVACY="no"
- em2應該使用靜態 ip連接到網際網路
IP: 179.94.94.83
Gateway: 179.94.94.81
Masq.: 255.255.255.248
它的配置腳本是
/etc/sysconfig/network-scripts/ifcfg-em2
:TYPE=Ethernet BOOTPROTO=dhcp DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=no IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=em2 DEVICE=em2 ONBOOT=yes IPADDR=179.94.94.83 GATEWAY=179.94.94.81 DNS1=200.40.30.245 DNS2=200.40.220.245 PROXY_METHOD=none BROWSER_ONLY=no PREFIX=29
問題:
問題是當兩個網卡(em1 和 em2)都連接時,我可以使用 IP 192.168.0.240 進行連接,但我無法使用 IP 179.94.94.83 進行訪問,反之亦然,這取決於首先插入的是哪一個,但如果只有其中一個已連接對應IP正常工作。
我一直在閱讀:
- https://kindlund.wordpress.com/2007/11/19/configuring-multiple-default-routes-in-linux/
- http://jensd.be/468/linux/two-network-cards-rp_filter
- https://serverfault.com/questions/779786/public-interface-not-listening-by-default-centos-7
但我找不到解決方案。在這裡,作者指的是 NAT 配置http://jensd.be/468/linux/two-network-cards-rp_filter#comment-15119但無論如何我不能讓兩個連接同時工作。
澄清事情:
1 NIC1 應具有本地靜態 IP,如 192.168.xx,NIC2 應具有外部靜態 IP 179.xxx
2 如果我們可以通過不同的網路訪問不同的服務,那就太好了,即。僅使用 LAN 的 SSH 和同時使用兩者的 HTTP(對 Internet 和 LAN 開放)
您不必放棄 DHCP。您可以指示啟動腳本禁用預設路由,即使從 DHCP 伺服器的回復中獲得。這允許您在 DHCP 伺服器上保持有效的活動租約並檢索 DHCP 提供的其他有用資訊,同時允許您在其他地方設置預設網關。
只需將
DEFROUTE
參數更改為:DEFROUTE=no
在
/etc/sysconfig/network-scripts/ifcfg-em1
並重新啟動網路(或只是ifdown em1; ifup em1
)。通過適配
/etc/sysconfig/network-scripts/ifup-eth
然後在 Redhat 找到(雖然它只提到了它在 NetworkManager 中的用法,但它可以在有和沒有它的情況下使用):在動態網路環境中,移動主機由 NetworkManager 管理,網關資訊可能是特定於介面的,最好由 DHCP 分配。在需要影響 NetworkManager 選擇用於到達網關的出口介面的特殊情況下,請在 ifcfg 文件中為那些不通向預設網關的介面使用 DEFROUTE=no 命令。
請注意,在 CentOS 上,如果
NM_CONTROLLED=no
未設置參數,並且安裝了 NetworkManager,這可能是您看到額外參數的情況,NetworkManager 將(通常很好地)與 sysconfig 腳本互動,並將從同一文件建構等效設置。然後建議對nmcli c reload
文件進行直接更改後進行操作。
System em1
一旦您確定用於介面的 id 或 uuid 命名(此處選擇由 NetworkManager命名),也可以從 NetworkManager 方面實現等效更改。nmcli c modify id 'System em1' ipv4.never-default yes
它將自動定位
DEFROUTE=no
在/etc/sysconfig/network-scripts/ifcfg-em1
. 仍然需要向下/向上循環界面。您可能還必須考慮禁用 DHCP 的 DNS 伺服器並使用“靜態”DNS 參數覆蓋它,儘管如果您同時需要內部和外部 DNS 解析,網路腳本沒有提供好的解決方案(那麼您可能需要自定義的本地 DNS 伺服器或類似的解決方案),因此請考慮這是否有幫助:
PEERDNS=no
這個參數似乎只有在 NetworkManager 的控制下才能正常工作,在我進行的測試中,顯然它沒有任何效果,因為 DNS 是直接設置的
/etc/resolv.conf
,dhclient
而不是首先由 NM“集成”。如果這確實是您的情況(沒有 NetworkManager 並且不想要它),那麼其他可用的答案可能更適合。同樣,暴露了等效的 NetworkManager
ipv4.ignore-auto-dns
(以及ipv6.ignore-auto-dns
匹配的)屬性。IPV6_PEERDNS=