상황에는 3 대의 기계가 포함됩니다.
A <--- ISP1 --- ISP 2 ---> B <--- ISP 2 --- 4G ---> C
4G 동글이 새로운 수신 연결을 거부함에 따라 autossh
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을 시도했습니다.
에 B :
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`
에 C :
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 동글의 인터페이스, 해당 인터페이스의 C 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
상 B 와 C 의 만 PREROUTING 라인 B는 각 시도 이후의 패킷 수 증가를 본다.
netfilter
작동 방식 에 대한 불완전한 이해 때문일 수 있습니다 .
도움을 주시면 감사하겠습니다!
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
체인의 규칙의 영향을받습니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다