내 서버는 VPN에 연결되어 있어야 합니다.고객. HMA에서 OpenVPN 스크립트를 실행하면 SSH를 통해 로컬 컴퓨터에서 서버로의 연결이 끊어집니다. 더 이상 연결할 수 없으며 VPN 프로세스를 수동으로 종료해야 합니다. 또한 해당 시간에는 숨겨진 TOR 서비스(.onion 페이지)를 사용할 수 없습니다.
TOR 페이지를 사용할 수 있고 서버가 VPN에 연결되어 있는 동안 SSH를 통해 연결할 수 있습니까?
답변1
문제는 기본 게이트웨이가 OpenVPN에 의해 변경되어 VPN이 아닌 인터페이스에서 들어오는 모든 연결이 끊어진다는 것입니다. Linux는 실제 인터페이스로 들어온 패킷에 대한 응답을 VPN 인터페이스 밖으로 보냅니다! OpenVPN을 시작하기 전에 적절한 경로를 설정해야 합니다.
다음은 나에게 효과적입니다. iptables와 ip(iproute2)를 사용합니다. 아래에서는 OpenVPN이 시작되기 전의 기본 게이트웨이 인터페이스가 "eth0"이라고 가정합니다. 아이디어는 eth0에 연결되면 eth0이 더 이상 기본 게이트웨이 인터페이스가 아니더라도 해당 연결에 대한 응답 패킷이 다시 eth0으로 돌아가도록 하는 것입니다.
연결 표시, 방화벽 표시 및 라우팅 테이블에 동일한 번호를 사용할 수 있습니다. 나는 그들 사이의 차이점을 더 분명하게 만들기 위해 고유한 숫자를 사용했습니다.
# set "connection" mark of connection from eth0 when first packet of connection arrives
sudo iptables -t mangle -A PREROUTING -i eth0 -m conntrack --ctstate NEW -j CONNMARK --set-mark 1234
# set "firewall" mark for response packets in connection with our connection mark
sudo iptables -t mangle -A OUTPUT -m connmark --mark 1234 -j MARK --set-mark 4321
# our routing table with eth0 as gateway interface
sudo ip route add default dev eth0 table 3412
# route packets with our firewall mark using our routing table
sudo ip rule add fwmark 4321 table 3412
===
업데이트:
위의 내용은 Debian Jessie에서 잘 작동합니다. 그러나 이전 Wheezy 시스템에서는 라우팅 테이블 항목에 "via"를 추가해야 한다는 사실을 방금 발견했습니다.
# our routing table with eth0 as gateway interface
sudo ip route add default dev eth0 via 12.345.67.89 table 3412
"12.345.67.89"는 원래 비VPN 게이트웨이여야 합니다.
답변2
비슷한 문제가 있습니다. 내 Ubuntu 데스크탑이 VPN에 있고 일반 SSH 연결이 홈 네트워크 외부에서 작동하지 않습니다.
그래도 방금 생각난 게 있어요. 해당 컴퓨터에 포트가 아직 전달되어 있나요?
VPN은 VPN 사이트에서 새 IP 주소를 할당하므로 라우터는 더 이상 연결할 IP 주소를 찾을 수 없습니다.
연결할 주소를 알기 위해서는 VPN 호스트가 할당한 새 IP 주소를 알아야 한다고 가정합니다.
나는 단지 지식을 바탕으로 추측한 것일 뿐, 알려진 수정 사항은 아닙니다. 그러니 작동하지 않으면 저를 학대하지 마십시오. :)
추가 조사를 통해 VPN이 포트 80을 리디렉션하고 SSH 터널이 일반적으로 포트 22를 사용하기 때문에 VPN을 통해 포트를 전달해야 한다는 사실을 발견했습니다. 포트 80에서 VPN에 연결하면 SSH 터널에 필요한 전달 포트로 리디렉션됩니다. 퍼티.
나는 아직도 이것이 어떻게 해야 하는지 100% 확신하지 못합니다. 누군가 그것을 확인할 수 있다면 좋을 것입니다.