상황에 따라.
내 홈 서버 중 하나는 원격으로 액세스 할 수 있는 OpenVPN 서버와 OpenSSH 서버 (및 기타 항목) 를 실행하고 있습니다.
집에 없을 때는 보통 VPN을 통해 해당 서버에 연결하고 해당 서버의 공개 IP를 통해 몇 개의 SSH 세션을 엽니 다.
내 서버를 통과하는 모든 (발신) 트래픽이 외부 VPN을 통해 터널링되도록 홈 서버를 외부 VPN에 연결하고 싶습니다.
|MobilePhone|---VPN ----|
|
|Other Dev|-----SSH ----|----VPN---->| Homeserver | --- VPN ---> | External Provider |
| ^
|Laptop|--SSH/NFS/VPN---| |
|
|
|Laptop|--------SSH---------------------|
여전히 (이전) 공용 IP를 통해 내 서버에 SSH를 사용할 수 있기를 원합니다. 내 라우터는 여전히 내 ISP에 직접 연결되어 있으므로 들어오는 트래픽은 서버로 직접 인식되어야하므로 가능해야한다고 생각합니다.
순진하다고 생각했습니다. tun1을 통해 서버를 외부 VPN에 연결하면 작동 할 수 있고 (tun0은 서버에서 사용됨) 괜찮습니다. 외부 VPN의 클라이언트 구성이 nobind
설정되었으므로 포트에서도 충돌이 없어야합니다.
여전히 openvpn 연결의 출력을 볼 수 있습니다. 그러나 얼마 지나지 않아 모든 연결이 끊어졌습니다.
* 이제 VPN에 연결할 수없고 SSH에 연결할 수도 없습니다. 또한 아파치에 더 이상 연결할 수 없습니다. 나는 아무것도 아닐 것 같아요
내 라우터는 여전히 공용 IP 주소의 핑에 응답합니다.
VPN에 연결하는 것이 내 서버 네트워크 인터페이스 또는이 방향의 무언가를 차지한 것 같습니다. 따라서 라우팅 문제 여야합니다.
하지만 정확히 무슨 일이 일어나고 있는지 그리고 이것이 작동하기 위해 내가 변경해야 할 것이 무엇인지 잘 모르겠습니다.
왜 이것이 내가 시도한 방식으로 작동하지 않는지 이해하고 싶습니다.
이러한 시나리오를 올바르게 설정하려면 무엇을 배워야합니까?
참고 :
ip route add 192.168.0.0/24 via 192.168.0.1 dev eth1
?최신 정보
다음 줄을 추가하여 한 걸음 더 나아갈 수있었습니다. /etc/network/interfaces
up ip rule add from 192.168.0.0/24 table 128 || true
up ip route add table 128 to 192.168.0.0/24 dev eth0 || true
up ip route add table 128 default via 192.168.178.1 || true
이를 통해 서버가 외부 VPN에 연결되어있는 경우에도 원래의 공용 IP를 통해 서버에 아파치 및 SSH에 액세스 할 수있었습니다.
내가 염두에 두었던 것, 내 LAN 또는 라우터에서 시작된 모든 패킷은 외부 VPN의 tun1 어댑터 대신 내 라우터를 기본 게이트웨이로 사용하여 eth0을 통해 라우팅됩니다.
여태까지는 그런대로 잘됐다.
지금 제가 겪고있는 문제는 노트북이 홈 서버에서 실행되는 OpenVPN 서버에 연결될 때 모든 연결 시간이 초과된다는 것입니다.
문제가 원래 문제와 비슷하다고 생각합니다. VPN (172.16.0.10)을 통해 연결된 내 랩톱에서 시작된 패킷은 반환 패킷이 내 서버가 연결된 외부 VPN 인 기본 게이트웨이를 통해 전송되므로 랩톱으로 다시 라우팅되지 않습니다.
나는 172.16.0.0에서 오는 것을 다시 172.16.0.xx로 라우팅하려고하는 라우팅 테이블을 만지작 거리고 있었다 tun0
. 결국 라우팅 테이블을 망 쳤고 이제 서버가 외부 VPN에 연결되어 있는지 여부에 관계없이 랩톱이 서버 VPN에 연결되면 요청 시간이 초과됩니다.
라우팅 테이블을 비우고 서버를 재부팅하여 적어도이 문제를 다시 고칠 수 있기를 바랍니다.
랩톱이 LAN (192.168.178.xx)에 연결되어 문제가 될 수 있는지 확실하지 않습니다.
문제는 노트북에서 보낸 패킷이 원래 소스 주소 (예 : 랩톱 tun
인터페이스 의 주소)를 사용하여 홈 서버에서 VPN 링크를 통해 전송된다는 것입니다. 이러한 패킷은 VPN 제공 업체에서 삭제해야하지만 그렇지 않은 경우에도 응답 패킷이 노트북으로 전달되지 않습니다.
해결책은 응답 패킷이 홈 서버를 통과하는지 확인하는 것입니다. 그것을 달성하기 위해, 그들은 전송 응답 것 같다 있어야 에 당신의 homeserver를. 따라서 다음 tun1
을 사용하여 홈 서버 의 인터페이스를 나가는 패킷의 소스 주소를 해당 인터페이스의 IP 로 다시 작성해야합니다.
iptables -t nat -A POSTROUTING -o tun1 -j MASQUERADE
를 사용 tcpdump -nlvvv -i tun1
하면 iptables 명령이 나가는 트래픽에 대해 수행 한 작업을 확인할 수 있습니다. 처음에 tcpdump를 사용하여 트래픽을 확인했다면 무엇이 잘못되었는지 즉시 깨달았을 것입니다. :)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다