누군가가 이것에 대해 밝힐 수 있기를 바랍니다. 네트워킹에 대한 나의 지식은 기껏해야 기본적입니다.
두 개의 네트워크에 CentOS 서버가 있습니다.
- NIC1은 스위치 1에 게이트웨이가 설정된 공용 IP에 있습니다. (ADSL 인터넷)
- NIC2는 스위치 2에 설정된 게이트웨이 없이 10.10.10.2로 설정됩니다. (케이블 인터넷)
- 스위치 2의 게이트웨이/라우터는 10.10.10.1입니다. (ASUS 라우터)
LAN 내에서 다른 LAN PC는 열린 포트의 10.10.10.2에 액세스할 수 있습니다. 포트 전달 규칙이 게이트웨이/라우터 10.10.10.1 --> 10.10.10.2에서 설정된 경우 작동하지 않습니다. 게이트웨이/라우터 10.10.10.1 --> 10.10.10.3으로의 포트 전달이 작동합니다(게이트웨이가 10.10.10.1로 설정된 Windows 시스템).
ASUS 라우터 10.10.10.1을 통해 공용 인터넷에서 10.10.10.2에 연결할 수 있습니까?
답변1
IP 정책 라우팅.
두 번째 NIC가 패킷을 수신하고 보낼 수 있도록 CentOS 서버를 업데이트하는 데 사용한 것과 동일한 두 개의 기록을 찾았습니다. 또한 듀얼 NIC/게이트웨이를 사용하여 다른 유사한 서버를 업데이트하는 데 성공했습니다.
http://jensd.be/468/linux/two-network-cards-rp_filter<-- '최상의 솔루션' 섹션에서 IP 정책을 설정하고 rp_filter 값을 변경하지 않았습니다. 이 글에는 멋진 다이어그램도 있습니다.
http://www.microhowto.info/howto/ensure_symmetric_routing_on_a_server_with_multiple_default_gateways.html <--위의 추가 예를 통해 더 명확해졌습니다.
변경 사항을 영구적으로 적용하려면 위의 첫 번째 링크에 있는 지침을 따르십시오.
내 예:
- ip 경로 추가 99.88.77.66/24 dev eth0 테이블 1(예: 공용 IP #1)
- ip 경로는 99.88.77.1 테이블 1을 통해 기본값을 추가합니다(공용 IP #1의 게이트웨이 예).
- ip 경로 추가 10.10.10.0/24 dev eth1 테이블 2(다른 네트워크의 두 번째 NIC)
- IP 경로는 10.10.10.1 표 2를 통해 기본값을 추가합니다(ASUS 라우터 게이트웨이)
- 99.88.77.66/32 테이블 1 우선순위 100에서 IP 규칙 추가
- IP 규칙 10.10.10.4/32 테이블 2 우선순위 110에서 추가
- IP 경로 플러시 캐시
/24는 IP의 서브넷 마스크에 따라 변경될 수 있습니다.
답변2
먼저 설정이 작동하지 않는 이유를 이해해야 합니다. 이를 위해 우리는 무슨 일이 일어나는지 고려해야 합니다.
- "케이블" 인터넷 연결에서 연결 시도가 들어옵니다.
- NAT 라우터는 대상 주소를 수정하고 매핑 테이블 항목을 설정합니다.
- 패킷이 서버에 도달하고 응답이 생성됩니다.
- 서버는 라우팅 테이블에서 응답 대상을 조회하고 패킷을 기본 게이트웨이(예: "ADSL" 인터넷 연결 방향)로 보냅니다.
- 가짜 소스 주소로 인해 패킷이 삭제될 가능성이 높습니다. 클라이언트로 다시 돌아오더라도 소스 주소는 클라이언트가 기대하는 주소와 일치하지 않으므로 클라이언트는 이를 가짜로 삭제합니다.
이제 우리는 무엇이 잘못되고 있는지 이해하고 이에 대해 조치를 취할 수 있습니다. 몇 가지 옵션이 있습니다.
옵션 1은 서버에서 "정책 라우팅"을 사용하여 소스 IP를 기반으로 트래픽을 라우팅하는 것입니다. 이것은 서버가 지원하는 가장 좋은 옵션입니다(최신 버전의 Linux에서는 지원).스타일의 대답소스 주소를 기반으로 라우팅하도록 Linux 서버에서 정책 라우팅을 설정하는 방법을 다룹니다.
옵션 2는 정책 라우팅이 가능한 박스에 서버의 기본 게이트웨이를 지정하는 것입니다. 그러면 해당 상자는 소스 IP에 따라 트래픽을 올바르게 라우팅할 수 있습니다. 서버 OS가 정책 라우팅을 지원하지 않는 경우 이는 유용한 솔루션이 될 수 있습니다.
옵션 3은 NAT 박스가 포트 포워딩되는 트래픽을 마스커레이드하도록 만드는 것입니다. 나는 이것이 트래픽의 실제 소스 주소를 숨기기 때문에 최후의 수단 옵션이라고 생각합니다.