2개의 네트워크 카드가 있는 서버에서 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에는 192.168.xx와 같은 로컬 고정 IP가 있어야 하고 NIC2에는 외부 고정 IP 179.xxx가 있어야 합니다.
2 서로 다른 네트워크를 통해 서로 다른 서비스에 접근할 수 있다면 좋겠습니다. LAN만 사용하는 SSH 및 둘 다를 사용하는 HTTP(인터넷 및 LAN에 개방형)
답변1
DHCP를 포기할 필요는 없습니다. DHCP 서버의 응답을 통해 기본 경로를 얻은 경우에도 기본 경로를 비활성화하도록 시작 스크립트에 지시할 수 있습니다. 이를 통해 DHCP 서버에서 유효한 활성 임대를 유지하고 DHCP에서 제공하는 기타 유용한 정보를 검색하는 동시에 다른 곳에 기본 게이트웨이를 설정할 수 있습니다.
DEFROUTE
매개변수를 다음과 같이 변경 하면 됩니다 .
DEFROUTE=no
/etc/sysconfig/network-scripts/ifcfg-em1
네트워크를 다시 시작합니다(또는 그냥 ) ifdown em1; ifup em1
.
Redhat에서 연구한 후 /etc/sysconfig/network-scripts/ifup-eth
발견했습니다(NetworkManager에서의 사용법만 언급하고 있지만 NetworkManager를 사용하든 사용하지 않든 작동합니다).
4.6. 기본 게이트웨이 구성
모바일 호스트가 NetworkManager에 의해 관리되는 동적 네트워크 환경에서 게이트웨이 정보는 인터페이스별로 다를 수 있으며 바람직하게는 DHCP에 의해 할당됩니다. 게이트웨이에 도달하는 데 사용할 NetworkManager의 종료 인터페이스 선택에 영향을 미쳐야 하는 특별한 경우에는기본 게이트웨이로 연결되지 않는 인터페이스의 경우 ifcfg 파일에서 DEFROUTE=no 명령을 사용합니다.
CentOS에서 NM_CONTROLLED=no
이 매개변수가 설정되지 않고 NetworkManager가 설치된 경우(추가 매개변수를 사용하는 경우일 수 있음) NetworkManager는 (일반적으로 괜찮음) sysconfig 스크립트와 상호 작용하고 동일한 파일에서 동등한 설정을 구축합니다. . 그렇다면 nmcli c reload
직접 파일을 변경한 후 하시는 것을 추천드립니다 .
인터페이스에 사용할 ID 또는 uuid 이름 지정(여기서 NetworkManager가 선택됨 System em1
)을 결정한 후에는 NetworkManager 측에서도 동등한 변경 사항을 구현할 수 있습니다.
nmcli c modify id 'System em1' ipv4.never-default yes
다운/업 루프 인터페이스는 여전히 필요 DEFROUTE=no
합니다 ./etc/sysconfig/network-scripts/ifcfg-em1
내부 및 외부 DNS 확인이 모두 필요한 경우 네트워크 스크립트가 좋은 솔루션을 제공하지 않지만 DHCP의 DNS 서버를 비활성화하고 "정적" DNS 매개 변수로 재정의하는 것을 고려해야 할 수도 있습니다. 그러면 사용자 지정 로컬 DNS가 필요할 수 있습니다. 서버 또는 유사한 솔루션), 이것이 도움이 되는지 고려하십시오:
PEERDNS=no
이 매개변수는 NetworkManager 제어 하에서만 제대로 작동하는 것으로 보이며, 제가 수행한 테스트에서는 DNS가 NM에 의해 먼저 "통합" /etc/resolv.conf
되지 않고 직접 설정되었기 때문에 아무런 효과가 없었습니다 dhclient
. 이것이 실제로 귀하의 경우라면(NetworkManager가 없고 원하지 않는 경우) 사용 가능한 다른 답변이 더 적합할 수 있습니다.
마찬가지로, 동등한 NetworkManager ipv4.ignore-auto-dns
(및 ipv6.ignore-auto-dns
일치하는 IPV6_PEERDNS=
) 속성도 노출됩니다.
답변2
구성에 여전히 DHCP가 있습니다.
스크립트 /etc/sysconfig/network-scripts/ifcfg-em1
는 다음과 같아야 합니다.
DEVICE=em1
BOOTPROTO=static
DHCPCLASS=
IPADDR=192.168.0.240
NETMASK=255.255.255.0
BROADCAST=192.168.0.255
NETWORK=192.168.0.0
ONBOOT=yes
당신의 /etc/sysconfig/network-scripts/ifcfg-em2
모습은 다음과 같습니다:
DEVICE=em2
BOOTPROTO=static
DHCPCLASS=
IPADDR=179.94.94.83
NETMASK=255.255.255.248
BROADCAST=179.94.94.87
NETWORK=179.94.94.80
ONBOOT=yes
또한 기존 GATEWAY 줄에 다음 줄을 추가 /etc/sysconfig/network
하거나 기존 GATEWAY 줄을 편집합니다.
GATEWAY=179.94.94.81