다음을 입력하여 포트 전달을 활성화하는 두 가지 방법이 있습니다.
sudo sysctl -w net.ipv4.conf.eth1.route_localnet=1
아니면 다음 줄의 주석을 해제하세요
net.ipv4.ip_forward=1
에서 /etc/sysctl.conf
첫 번째 명령은 이더넷 네트워크의 이름을 지정합니다.
개인 정보 보호에는 어느 것이 더 낫습니까?
답변1
net.ipv4.ip_forward=1
더 나은. 간단한 포트 전달의 경우 첫 번째 접근 방식은 불필요하며 잘못된 경우가 많습니다. 공식 커널 문서를 인용하겠습니다.route_localnet
Route_localnet - BOOLEAN 라우팅 시 루프백 주소를 화성 소스 또는 대상으로 처리하지 않습니다. 이를 통해 127/8을 로컬 라우팅 목적으로 사용할 수 있습니다. 기본값은 거짓
https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt
답변2
이는 두 가지 다른 옵션입니다.
루프백 주소를 포함하여 컴퓨터에 여러 로컬 주소가 있을 수 있습니다. 예를 들어 포트 8080을 127.0.0.1에서 주소 192.168.0.1의 외부 인터페이스 ens0으로 전달하려면 다음을 수행합니다.
sysctl -w net.ipv4.conf.ens0.route_localnet=1
iptables -t nat -A PREROUTING -i ens0 -p tcp --dport 8080 -j DNAT --to 127.0.0.1
소켓 127.0.0.1:8080의 서비스는 192.168.0.1:8080부터 사용할 수 있습니다.
이는 다음 추상화에서 명확하게 볼 수 있습니다. "mangle PREROUTING" 뒤에 있는 "localhost source[YN]" 전환