이름으로 로컬에서만 액세스할 수 있는 장치에 원격으로 액세스하는 방법

이름으로 로컬에서만 액세스할 수 있는 장치에 원격으로 액세스하는 방법

공장에서 설정된 고정 주소가 동일한 여러 스위치가 있으며, 각 스위치는 스위치당 하나씩 두 개의 인터페이스가 있는 서버에 연결되어 있습니다. 서버의 기본 인터페이스는 로컬 홈 네트워크에 연결되고, 보조 인터페이스는 스위치 주소가 포함된 서브넷에 연결됩니다. 각 스위치에 이름을 할당하고, 연결된 서버의 내부 네트워크 주소에 대한 이름을 확인하고, 해당 주소로 전송된 트래픽을 스위치로 투명하게 전달하고 스위치에서 원래 집으로 돌아오는 트래픽을 투명하게 전달하도록 각 서버를 구성할 수 있기를 원합니다. 네트워크 주소. iptables NAT가 이 작업을 수행할 수 있어야 하는 것 같습니다. 그래서 iptables에는 다음과 같은 규칙이 있습니다.

*nat
-A POSTROUTING -p all -s switch -j SNAT --to house
-A PREROUTING  -p all -d house  -j DNAT --to switch

여기서 "switch"는 스위치의 고정 주소이고 "house"는 스위치에 할당한 홈 네트워크 주소입니다. (둘 다 숫자로 입력됩니다.) 물론 여기까지 쓰고 있으니 그건 안 되겠죠.

iptables를 활성화하기 전에 서버와 홈 네트워크의 다른 장치에서 "홈" 주소로 핑을 보낼 수 있었고 서버에서 "스위치" 주소로 핑을 보낼 수 있었습니다. 서버에 있는 스위치의 고정 주소에 대해 nmap을 실행하면 올바른 스위치 포트가 열려 있는 것을 볼 수 있고, 홈 네트워크에 있는 다른 장치의 "스위치" 주소에 대해 nmap을 실행하면 서버에 포트가 열려 있는 것을 볼 수 있습니다. iptables를 활성화하면 어떤 장치가 응답하는지 잘 모르겠지만 핑은 계속 응답합니다. 서버에서 "스위치" 주소로의 nmap은 여전히 ​​스위치 포트가 아닌 서버 포트를 표시합니다. 다른 장치의 nmap은 모든 포트가 필터링되었다고 보고합니다.

신뢰성을 위해 스위치의 고정 주소를 변경하지 않겠습니다. 어떤 이유로든 스위치가 재설정되면 작업이 계속 진행되기를 바랍니다.

실제로 해야 할 일은 포트 80과 443에 ping을 보내는 것뿐입니다. 더 나은 해결책이 있어야 합니다.

답변1

결국 댓글 체인이 길어졌습니다 :)

그래서 내 마지막 제안은 규칙을 추가하는 것입니다.

iptables -t nat -A POSTROUTING -o $IFSW -j MASQUERADE

$IFSW각 서버의 스위치 인터페이스는 어디에 있습니까?

이런 방식으로 스위치는 서버로부터 패킷을 수신하고 적절하게 응답하며 서버는 응답 패킷의 원래 주소로 다시 매핑을 처리합니다.

관련 정보