내 시스템에는 두 개의 네트워크 카드가 있습니다. 이 기기와 일부 동반 장비는 이동되어 다른 LAN에 연결되거나 전화 접속 연결을 사용하는 경우도 있습니다.
eth0:
- 10.x.x.x address space
- no internet gateway
- only a few devices
eth1 (when used):
- 172.16.x.x or 192.168.x.x or other address spaces
- access to the gateway from LAN to internet
ppp0 (when used):
- internet access through dialup using KPPP
나는 ifconfig를 사용하여 인터페이스를 가동하거나 중단합니다(KPPP에서 처리하는 ppp0 제외).
eth1을 먼저 시작하면 DHCP에서 주소를 가져오고 게이트웨이를 가져와서 라우팅에 추가하므로 문제 없이 LAN과 인터넷에 액세스할 수 있습니다.
eth0을 처음 또는 두 번째로 시작하면 해당 주소를 가져오고 해당 주소 공간(10.xxx 범위) 내에서 기본 게이트웨이를 설정합니다. eth0을 먼저 시작한 다음 eth1을 시작하면 기본 게이트웨이는 10.xxx 범위에 유지됩니다.
따라서 내가 무엇을 하든 eth0은 eth1을 재정의하고 경로에서 게이트웨이를 "요구"합니다.
eth0이 게이트웨이를 요청하는 것을 방지하거나 eth1(두 번째인 경우)이 게이트웨이를 사용하는지 확인하는 방법이 있습니까? 아니면 어떤 인터페이스의 게이트웨이를 다른 인터페이스보다 사용해야 하는지 우선순위를 정할 수 있나요?
기본적으로 eth1의 기본 주소 공간 게이트웨이가 활성화되어 있는지 확인하고, 그렇지 않은 경우 ppp0의 기본 게이트웨이를 사용하고 싶습니다. eth0이 기본 게이트웨이를 갖는 것을 방지하고 싶습니다.
답변1
Raspbian에서도 비슷한 문제가 있었습니다(아래 솔루션은 Debian에서도 작동할 것 같습니다). Raspberry Pi 3에는 Wi-Fi와 이더넷이라는 2개의 NIC가 통합되어 있습니다. 저는 wlan0과 eth0을 각각 사용합니다. wlan0은 내 집 Wi-Fi 네트워크에 연결되어 있으며 이 인터페이스를 통해 인터넷에 액세스합니다. DHCP를 통해 내 홈 라우터에서 설정을 가져옵니다. eth0은 내 Windows PC에 직접 연결되어 있으며변화 없는IP가 할당되었습니다. Windows PC에서 구성하지 않았기 때문에 eth0을 통해 인터넷에 액세스할 수 없습니다.
Raspbian에서 dhcpcd 데몬은 네트워크 인터페이스 구성을 담당합니다. eth0 인터페이스에 고정 IP를 설정하려면 끝에 다음 줄을 추가하세요 /etc/dhcpcd.conf
.
interface eth0
static ip_address=192.168.2.2/24
static routers=192.168.2.1
static domain_name_servers=192.168.2.1
이 설정을 사용하면 dhcpcd는 2개의 기본 경로를 생성하고 eth0을 통한 경로는 wlan0을 통한 경로보다 우선순위가 높습니다.
pi@raspberrypi:~ $ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.2.1 0.0.0.0 UG 202 0 0 eth0
default 192.168.1.254 0.0.0.0 UG 303 0 0 wlan0
192.168.1.0 * 255.255.255.0 U 303 0 0 wlan0
192.168.2.0 * 255.255.255.0 U 202 0 0 eth0
따라서 시스템이 eth0을 통해 라우팅하려고 시도하지만 위에서 언급한 대로 인터넷에 액세스할 수 없기 때문에 인터넷에 액세스할 수 없습니다.
이 문제를 해결하기 위해 eth0 인터페이스의 nogateway
옵션을 사용했습니다. /etc/dhcpcd.conf
따라서 eth0 특정 구성은 다음과 같이 시작됩니다.
interface eth0
static ip_address=192.168.2.2/24
static routers=192.168.2.1
static domain_name_servers=192.168.2.1
nogateway
이 구성을 저장하고 재부팅한 후에는 eth0을 통한 기본 경로가 없습니다.
pi@raspberrypi:~ $ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.1.254 0.0.0.0 UG 303 0 0 wlan0
192.168.1.0 * 255.255.255.0 U 303 0 0 wlan0
192.168.2.0 * 255.255.255.0 U 202 0 0 eth0
인터넷이 나타나고 문제가 해결되었습니다.
답변2
RHEL6/Fedora 22에서는 다음 사항이 테스트되었습니다.
/etc/sysconfig/network-scripts/ifcfg-eth1에 다음 줄을 추가합니다.
DEFROUTE=no
eth1을 기본 경로가 필요하지 않은 인터페이스의 이름으로 바꿉니다.
IPv4 탭 하단에 있는 "네트워크의 리소스에만 이 연결 사용" 상자를 선택하여 Network Manager GUI를 통해 이 작업을 수행할 수도 있습니다.
DEFROUTE=no는 인터페이스가 활성화될 때 기본 경로(대상 0.0.0.0)가 라우팅 테이블에 추가되는 것을 방지합니다. 즉. 다음 항목은 추가되지 않습니다.
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 172.16.x.x 0.0.0.0 UG 0 0 0 eth1
답변3
DHCP 서버 구성이 잘못되었습니다. 나머지 세계에 경로를 제공할 수 없는 경우 기본 게이트웨이 옵션을 보내서는 안 됩니다. 이 옵션을 보내면 모든 클라이언트는 오프라인 대상에 대한 패킷을 지정된 기본 게이트웨이로 보낼 수 있다고 가정할 수 있습니다.
따라서 DHCP가 장치에 eth0의 기본 게이트웨이를 사용하라고 지시하면 장치가 올바른 것입니다. 해결책은 DHCP 서버에서 잘못된 옵션을 제거하는 것입니다.
답변4
eth0
Roman Me의 답변은 훌륭하지만, 언젠가 인터넷을 사용하고 싶다면 어떻게 해야 할지 궁금합니다 .
내가 한 일은 nogateway
내가 /etc/dhcpcd.conf
추가한metric 1000
이렇게 하면 경로가 계속 추가되지만 다른 경로에 대해서는 높이(낮은 우선순위)로 처리됩니다.