![SSH 터널을 통한 IP 전달](https://linux55.com/image/84957/SSH%20%ED%84%B0%EB%84%90%EC%9D%84%20%ED%86%B5%ED%95%9C%20IP%20%EC%A0%84%EB%8B%AC.png)
이 상황에는 3개의 머신이 관련됩니다.
- ㅏ일부 노트북은 어떤 방법으로든 인터넷에 연결됩니다.
- 두번째표준 ISP(dyndns에서 제공하는 고정 IP: myserver.dyndns.com)를 통해 인터넷에 연결된 서버
- 씨다른 서버가 4G 어댑터를 통해 인터넷에 연결되어 있습니다.
ㅏ<---ISP1 ---ISP 2 --->두번째<---ISP 2 --- 4G --->씨
autossh
4G 동글은 새로 들어오는 연결을 거부하므로 B를 통해 A에서 C로 연결하는 채널 을 설정했습니다 .
autossh -M 0 -N [email protected] -R 10022:127.0.0.1:22 -R 10000:127.0.0.1:10000
좋은 결과.
이제 다음을 입력하여 4G 동글의 웹 인터페이스에 액세스하고 싶습니다.
myserver.dyndns.com:80
그래서 NATing을 시도했습니다.
존재하다두번째:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:10000
그리고
iptables -t nat -A POSTROUTING -d 127.0.0.1 --dport 10000 -j MASQUERADE`
존재하다씨:
iptables -t nat -A PREROUTING -p tcp --dport 10000 -j DNAT --to-destination 192.168.8.1:80
그리고
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
참고: eth1
4G 동글의 인터페이스입니다.씨인터페이스의 IP는 192.168.8.100이고 동글의 IP는 192.168.8.1입니다.
불행히도 이것은 작동하지 않습니다. IP 전달도 활성화했습니다.
echo 1 > /proc/sys/net/ipv4/ip_forward
타이핑하는 동안
iptables -t nat -L -v -n
존재하다두번째그리고씨, PREROUTING 행만두번째시도할 때마다 패킷 수가 증가하는 것을 볼 수 있습니다.
이는 작동 방식에 대한 불완전한 이해로 인해 발생할 수 있습니다 netfilter
.
당신이 제공할 수 있는 어떤 도움이라도 대단히 감사하겠습니다!
답변1
iptables -t filter -nvL
서버 B와 C의 출력을 제공해 주시겠습니까 ?
autossh
채널이 서버 C에서 실행되고 있는 것 같습니다 . 맞아? 그렇다면 다른 접근 방식을 제안하겠습니다. B에서는 커널이 권한이 없는 사용자가 포트 80을 여는 것을 허용하지 않기 때문에 REDIRECT 규칙이 필요합니다.
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 10000
iptables -t filter -A INPUT -p tcp --dport 10000 -j ACCEPT
(편집하다): 서버 B에서는 다음 GatewayPorts
위치에서 활성화되어야 합니다 /etc/ssh/sshd_config
.
# /etc/ssh/sshd_config
GatewayPorts clientspecified
서버 C에서 매개변수를 수정하여 연결을 동글로 직접 전달합니다 autossh
.
autossh -M 0 -N [email protected] -R 10022:127.0.0.1:22 \
-R :10000:192.168.8.1:80
귀하의 설정에서 볼 수 있는 유일한 오류는 PREROUTING
서버 C의 체인 규칙에 관한 것입니다. 이 경우 네트워크 인터페이스를 통해 들어오는 패킷에만 영향을 주기 때문에 평가되지 않습니다. 생성된 연결은 ssh
로컬로 생성되므로 OUTPUT
체인의 규칙에 영향을 받습니다.