나는 얻었다하나웹서버닉 두 개개별 서브넷에서192.168.188.x그리고192.168.198.x. 이 웹 서버는 2개의 다른 라우터(192.168.188.1 및 192.168.198.1)에 연결되어 있으며 포트 80을 통해 인터넷에 직접 포트 전달됩니다(각 라우터에는 자체 공용 IP 주소도 있습니다).
(external ip) Portforwarding:80 (external ip)
---[ROUTER]---- ---[ROUTER]----
192.168.188.1 Router internal IP 192.168.198.1
| |
| |
| |
| |
+------- 192.168.188.11:80 [WEBSERVER] 192.168.198.11:80 -------+
나는 포트 80의 서버에 반응하고 싶습니다.둘 다서브넷. 안타깝게도 기본 구성에서는 기본 게이트웨이로 설정된 라우터에만 응답합니다. 이는 매우 논리적입니다. 하지만 패킷을 보낸 인터페이스로 패킷을 다시 보내려면 이를 수행해야 합니다. 이것을 달성하는 방법은 무엇입니까? NAT 등을 위한 라우터의 포트 전달 외에는 추가 구성 가능성이 없습니다. 웹서버에서 어떤 작업도 수행해야 하는데, 이는 데비안 확장입니다.
네트워크 문제는 10년에 한 번 정도만 직면한다는 점을 염두에 두고 간단하게 설명해주세요. :)
답변1
답변2
이 솔루션에는 복잡한 라우팅 구성이 필요합니다.
웹 서버는 (
192.168.188.11
및192.168.198.11
) 주소 또는0.0.0.0
주소를 모두 수신해야 합니다. 이는 을 의미합니다all addresses
. 명령어 로 확인해보세요ss -tlnp sport == :80
.각각에 대해 별도의 라우팅 테이블을 만듭니다.다리:
ip route add 192.168.188.0/24 dev <iface1> table 1
ip route add 0/0 via 192.168.118.1 dev <iface1> table 1
ip route add 192.168.198.0/24 dev <iface2> table 2
ip route add 0/0 via 192.168.198.1 dev <iface2> table 2
- 요청이 수신된 내용을 통해 동일한 인터페이스를 통해 응답을 라우팅하도록 라우팅 규칙을 구성합니다.
ip rule add from 192.168.188.11 lookup 1 pref 1000
ip rule add from 192.168.198.11 lookup 2 pref 2000
- 문제 해결:
tcpdump -ni <iface> 'tcp port 80'
트래픽을 스니핑하는 데 사용하십시오 . 최소한 외부에서 http 요청이 표시되어야 합니다.- 경로를 확인하세요요청와 함께
ip route get <dst> from <src> iif <iface>
. 경로 가 표시되어야 합니다local
. 다른 내용이 표시되면rp_filter
withip netconf show dev <iface>
명령을 확인하세요.off
또는 모드에 있어야 합니다loose
. - 실제 경로를 확인하세요.답글with
ip route get <dst> from <src-address>
, 여기서 대상 주소는 소스 주소입니다.요청당신은 출력에서 보았습니다tcpdump
. - 명령으로 방화벽 규칙을 확인하십시오
iptables-save -c
. 구성요구하지 않습니다추가적인낫규칙!