내 방화벽 IP는 기본 게이트웨이이기도 한 10.0.0.2/24입니다. 외부 네트워크가 SSH를 통해 IP 10.0.0.1/24를 사용하는 서버에 연결하도록 허용해야 합니다. iptables를 사용해야 하고 방화벽에 대한 권한을 설정해야 합니다.
답변1
다른 모든 것이 준비되어 있다고 가정하면 방화벽에 두 가지 규칙이 있는지 확인해야 합니다.
- 전달 규칙: 트래픽이 외부에서 10.0.0.1 포트 22로 전달되도록 허용해야 합니다.
- NAT 규칙: RFC 1918 개인 IPv4 네트워크를 사용하고 있으므로 포트 22로 향하는 방화벽에 도착하는 패킷의 대상 주소를 변경해야 합니다.
다시 한번 말씀드리지만, 귀하의 방화벽이 WAN 바운드 트래픽을 가장하도록 설정되어 있고 IPv4 전달이 활성화되어 있으며 반환 트래픽 전달을 허용한다고 가정합니다.
전달이 허용되는지 확인하기 위해 첫 번째 부분을 해결하려면 다음을 수행하십시오.
iptables -I FORWARD -d 10.0.0.1 --p TCP --dport 22 -j ACCEPT
FORWARD 체인의 기본값이 ACCEPT(일반적으로 기본값)인 경우 이 규칙이 필요하지 않을 수 있습니다.
둘째, 대상 주소 변환을 수행합니다.
iptables -t nat -I PREROUTING -p tcp --dport 22 -j DNAT --to 10.0.0.1
-I
두 예 모두에서 규칙이 기존 규칙보다 우선적으로 해당 체인에 삽입되도록 했습니다 . 이는 바람직할 수도 있고 바람직하지 않을 수도 있습니다.
인터페이스 이름을 추가하여 규칙을 더 구체적으로 만들 수 있지만 질문에 아무 것도 지정하지 않았습니다.
또한 이러한 규칙은 영구적이지 않습니다. 시스템을 다시 시작하면 해당 규칙이 사라집니다.
답변2
아래 권한을 이용하여 외부에서 내부 네트워크로 SSH 접속이 가능합니다.
# nano /etc/sysctl.conf
net.ipv4.ip_forward = 1
# route add -net 10.0.0.0/24 dev ens33
# iptables -t nat -A POSTROUTING ! -d 10.0.0.0/24 -o ens33 -j SNAT --to-source 192.168.1.200
# iptables -A PREROUTING -t nat -i ens38 -p tcp --dport 22 -j DNAT --to 10.0.0.1
# iptables -A FORWARD -p tcp -d 10.0.0.1 --dport 22 -j ACCEPT