
나는 다음과 같은 토폴로지를 가지고 있습니다
.───────────────.
┌──────────────────┐ _.─' `──.
│ │ ,─' '─.
│ ISP Router │ Dynamic IP ; :
│ with NAT ├─────────────────────────────────────────────────────────: Internet ;
│ │ ╲ ╱
└─────────┬────────┘ '─. ,─'
│ `──. _.─'
│ 10.0.0.1 `──────┬──────'
│ │
.──────┴────. .─────┴─────.
,─' '─. ┌─────────────────────────┐ ,─' '─.
,' `. │ │ ,' `.
; LAN : Static DHCP┌──┴───┐ ┌──┴───┐ Static IP ; Public Net :
: ;─────────────┤ eth1 │ My Server │ eth0 ├────────────: ;
╲ 10.0.0.0/24 ╱ 10.0.0.5 └──┬───┘ └──┬───┘ 1.2.3.5 ╲ 1.2.3.4/20 ╱
`. ,' │ Debian Buster │ mydomain.com `. ,'
'─. ,─' │ │ '─. ,─'
`─────────' └─────────────────────────┘ `─────────'
역사적인 이유로 인해 ISP는 별도의 네트워크를 사용하여 고정 IP를 제공합니다. 이는 내 서버를 인터넷에 직접 노출되는 특수 연결에 직접 연결해야 함을 의미합니다(다이어그램에서는 eth0
IP 사용 1.2.3.5
).
그러나 저는 이 동일한 서버를 집에서 NAS로 사용하고 있으며 완전히 별도의 네트워크이기 때문에 다른 인터페이스를 사용하여 연결 eth1
하고 주소로 정적 DHCP 할당을 생성합니다 10.0.0.5
. 이렇게 하면 홈 네트워크의 다른 장치가 이를 찾아 네트워크 마운트에 액세스할 수 있습니다.
마지막으로 내 도메인에 대한 DNS 레코드가 있습니다(이 예에서는 mydomain.com
) 1.2.3.5
.
몇 가지 문제가 발생했습니다.
mydomain.com
LAN에서 액세스하려고 하면 작동하지 않습니다. 나는 서버가 인터페이스에서 패킷을 받았지만eth0
응답을 하고eth1
다른 장치는 다른 IP에서 왔기 때문에 응답을 삭제하기 때문이라고 생각합니다.- 부팅 시 서버는
1.2.3.4
외부 액세스가 를 통해 작동하도록 인터넷 트래픽을 전달할 네트워크로 선택해야 합니다mydomain.com
. 그러나 둘 다 각각의 게이트웨이를 통해 인터넷에 액세스할 수 있기 때문에eth0
부팅eth1
하고10.0.0.1
기본 게이트웨이로 선택한 다음 액세스가mydomain.com
작동하지 않는 경우가 있습니다. 나는 이것이 를 통해 들어eth0
오고 나가는 트래픽과 비슷한 문제라고 생각합니다eth1
.
기본적인 네트워킹에 대해서는 잘 알고 있지만 이렇게 동시에 여러 네트워크에 서버를 연결해 본 경험은 없습니다. 이상적으로는 다음과 같이 서버를 구성하고 싶습니다.
- 모든 인터넷 트래픽은 다음을 통해 종료됩니다.
eth0
- 들어오는 모든 트래픽은
eth0
다음을 통해 응답됩니다.eth0
- 들어오는 모든 트래픽은
eth1
다음을 통해 응답됩니다.eth1
내 서버는 데비안을 실행하고 있습니다. 도움을 주시면 감사하겠습니다.
편집하다: 따라서 eth1 게이트웨이를 비활성화하고 약간의 작업을 수행한 후 tcpdump
트래픽이 eth0에서 들어오고 eth1에서 나가는 것을 확인할 수 있었습니다. 문제는 ISP가 끝점으로 가는 트래픽을 NAT 처리하지 않고 1.2.3.5
서버가 10.0.0.X
인터페이스에 있는 주소를 식별한다는 것입니다 eth1
.
답변1
이는 소스 기반 라우팅이나 정책 라우팅으로 해결할 수 있는 라우팅 문제입니다. 여기에는 각 소스 주소에 대해 하나씩 두 개의 라우팅 테이블이 포함됩니다.
보다http://tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.rpdb.multiple-links.html상세 사항은.
답변2
나는 이것이 서버가 인터페이스 eth0에서 패킷을 받고 나서 eth1을 통해 응답하기 때문이라고 생각합니다.
아니요. NAT를 사용하는 ISP 라우터는 클라이언트 10.0.0.0 주소를 ISP 동적 주소로 NAT하므로 서버는 내부 주소가 아닌 해당 주소에 응답하게 됩니다. 내부 IP 주소를 연결의 다른 쪽 끝으로 전달하므로 NAT와 반드시 호환되지 않는 FTP와 같은 예외가 있지만 일반적인 경우 NAT 트래픽은 eth0에 유지됩니다.
로그를 확인하여 클라이언트가 1.2.3.4로 아웃바운드되고 서버가 NAT 주소 ip.ip.ip.ip에서 연결을 받고 있는지 확인하세요.
부팅 시 서버는 mydomain.com을 통해 외부 액세스가 작동하도록 인터넷 트래픽을 전달할 네트워크로 1.2.3.4를 선택해야 합니다. 그러나 eth0과 eth1은 모두 해당 게이트웨이를 통해 인터넷에 액세스할 수 있으므로
그거 하지마. 멀티홈 구성에 여러 개의 기본 게이트웨이가 있으면 사람들이 의도한 대로 작동하는 경우가 거의 없습니다. 대략적으로 여러 기본 게이트웨이는 두 경로가 모두 기업 설정의 라우터 이중화/고가용성을 위해 동일한 네트워크에 대한 액세스를 제공하는 경우에만 사용해야 합니다. 인터넷에 대한 ISP 라우터와 공용 네트워크에 대한 직접 연결은 동일하지 않으므로 이 항목을 제거해야 합니다. eth0에는 기본 경로가 있어야 하고 eth1에는 10.xxx에 대한 경로가 있어야 합니다. DHCP를 사용해도 이 작업을 수행할 수 있지만 10.0.0.5에 대한 예약/제외로 접근하여 서버 IP를 수동으로 구성하겠습니다.
외부 기본 경로를 제외하고 설명하신 내용은 일반적인 기본 작업입니다. 위에 설명되지 않은 다른 문제도 찾아보세요.
- DNS와 다른 호스트 파일(클라이언트를 1.2.3.4 대신 10.0.0.5에 연결하려고 했습니까? 내부적으로는 webserver1.internalfqdn.com과 같은 기술적 이름을 사용하고 외부에서는 다음과 같은 친숙한 이름을 사용하는 것을 좋아합니다.www.externalfqdn.com)
- 위에 반영되지 않은 수동 경로 테이블(라우터로 10.0.0.x에서 1.2.3.4~10.0.0.5까지 바로가기를 시도하셨나요? - 작동할 수 있지만 추가 구성이 필요함)
- 라우팅 프로토콜(예: RIP)(실제로는 위의 변형이지만 RIP 또는 기타 경로 게시를 활성화한 경우 잘못된 경로를 게시할 수 있음)
답변3
나는 결국 다음을 사용하여 문제를 해결했습니다.분할 DNS접근 방식으로 내 호스트에 DNS 서버를 배포하고 전체 LAN이 이를 기본 DNS 서버로 사용하도록 합니다. 여기에 공용 주소 대신 mydomain.com
리디렉션할 사용자 지정 DNS 재작성 규칙을 추가했습니다 . 10.0.0.5
이런 방식으로 LAN의 호스트는 내 도메인을 내부 IP로 확인하고 LAN 외부의 호스트는 이를 공용 IP로 확인합니다. 이전과 같이 로컬 트래픽이 ISP 네트워크를 통해 나갈 필요가 없다는 이점이 있습니다.
이 문제를 해결할 수 있어야 한다고 생각하는 또 다른 대안은 다음과 같습니다.헤어핀 라우팅. 그러나 내 ISP가 제공하는 라우터는 이를 지원하지 않는 것 같습니다.