
인터페이스에 할당되지 않은 IP 주소에 대해 들어오는 패킷을 수신하기 위해 Xinetd(또는 다른 솔루션)를 사용하고 Xinetd와 같은 데몬을 시작하는 것이 어떻게든 가능합니까?
따라서 내 Linux 시스템은 기본 GW이며 모든 패킷이 여기에 전송됩니다. 인터페이스에 바인딩되지 않은 대상 IP가 있는 특정 패킷을 인식하고 이에 반응하고 싶습니다(데몬 시작).
감사해요!
답변1
예, net.ipv4.ip_nonlocal_bind
설정을 활성화합니다:
echo "net.ipv4.ip_nonlocal_bind = 1" > /etc/sysctl.d/enable-nolocal-bind.conf"
sysctl net.ipv4.ip_nonlocal_bind=1
(후자는 "지금 활성화"이며, 첫 번째 줄은 이것을 지속되게 만드는 것입니다). 이제 모든 IP 주소에 데몬을 바인딩할 수 있습니다.
그러나 예상대로 작동하지 않을 수도 있습니다. 동일한 LAN 컴퓨터에서는 기본 gw를 사용하여 통신하지 않습니다. 예를 들어 패킷을 보낼 시스템의 MAC 주소를 찾기 위해 ARP 쿼리를 만드는 등 직접 패킷을 보냅니다. 응답이 없으면 기본 gw로 패킷을 보내는 것으로 되돌아가지 않습니다. 대신 오류로 인해 실패합니다.
답변2
Linux에서 local 유형의 경로는 루프백이며 localhost로 전달됩니다. 또한 ~으로 알려진AnyIP.
원하는 만큼 큰 접두사를 라우팅합니다. IPv6를 사용하는 경우 해당 목적을 위해 전체 /64를 예약할 수 있습니다 2001:db8:bdd2:c0e::/64
. 이를 이 호스트(Linux 상자)로 라우팅하고 Linux 상자에서 로컬로 보냅니다.
원하는 포트에서 수신 대기하도록 xinetd를 구성하십시오.
최종 결과, 해당 네트워크의 모든 IP(예: 2001:db8:bdd2:c0e::138
)가 이 상자에서 종료되고 서버 프로그램이 시작됩니다.