Wireguard 사용시 client 들끼리 ssh 통신
안녕하세요
Wireguard 세팅을 이래저래 찾다 달소님의 wg-easy를 세팅하여 사용중인 학생입니다. (달소님 감사합니다.)
wg-easy는 현재 집 서버 (우분투 20.04)에 세팅되어있습니다.
학교 연구실 네트워크 내에 제가 사용중인 pc들이 2대가 있습니다.
원래는 연구실 네트워크 세팅 조정을 통해 원격 접속이 가능했지만
안타깝게도 최근 연구실 확장 이전으로 인해 네트워크 세팅을 조정할 수 없는곳에 배치받아
현재 외부에서 접속할 수가 없습니다.
이런 환경에서 제게 든 생각은
사용중인 연구실 컴퓨터들을 집에 구축한 wireguard vpn에 접속시킨다면
적절한 세팅을 통해 외부에서 접속가능하지 않을까
였습니다.
가장 최종 목표는 연구실 컴퓨터에 세팅된 jupyter lab에 접속하는 것입니다.
jupyter에 접속하기 앞서 ssh 접속부터 가능해야 하지 않을까 하는 생각에 (ssh만 되면 tunneling할 생각입니다.)
ssh를 일단 wireguard 에 접속된 client들끼리 연결을 해보고자 열심히 찾아보고 있습니다만
쉽지 않은 문제인듯 합니다.
현재 확인한 부분은
1. client to server, client to client 간의 ping은 문제없이 동작합니다.
2. client에서 wireguard가 세팅된 서버로의 ssh는 가능합니다.
3. server에서 client로의 ssh는 동작하지 않습니다.
4. client에서 client로의 ssh는 동작하지 않습니다.
어느 부분을 어떻게 만지면 좋을까요?
yml 파일은 아래와 같습니다.
----------------------------------------------------------------
version: "3.8"
services:
wg-easy:
environment:
# ⚠️ Required:
# Change this to your host's public address
- WG_HOST=DDNS 주소~
#Optional:
- PASSWORD=비밀번호~
- WG_PORT=51820
# - WG_DEFAULT_ADDRESS=10.10.0.0
# - WG_DEFAULT_DNS=8.8.8.8
# - WG_MTU=1420
# - WG_ALLOWED_IPS=0.0.0.0/0
# - WG_PERSISTENT_KEEPALIVE=10
image: weejewel/wg-easy
container_name: wg-easy
volumes:
- /home/honbul/wireguard/config:/etc/wireguard
ports:
- "51820:51820/udp"
- "51821:51821/tcp"
restart: unless-stopped
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1
--------------------------------------------------------
wg0.conf 파일은 아래와 같습니다.
----------------------------------------------------------
[Interface]
PrivateKey = #
Address = 10.13.13.0/24
ListenPort = 51820
PostUp = iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE; iptables -A INPUT -p udp -m udp --dport 51820 -j ACCEPT; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT;
PostDown =
# Client: phone (56573cc3-304b-43e5-ab44-7a3efcb7c9b2)
[Peer]
PublicKey = #
PresharedKey =#
AllowedIPs = 10.8.0.2/32
# Client: Galaxy (af04b769-8321-4a9c-b0ba-b790e979e271)
[Peer]
PublicKey = #
PresharedKey = #
AllowedIPs = 10.8.0.4/32
# Client: vega (2e524aff-a1e5-4712-8b38-a466cc845ec2)
[Peer]
PublicKey = #
PresharedKey = #
AllowedIPs = 10.8.0.3/32
---------------------------------------------------------------------------------
2. client에서 wireguard가 세팅된 서버로의 ssh는 가능합니다.
이게 가능하시면 ssh 터널링도 가능할거고, VPN연결도 가능한거 아닌가요?
클라이언트들을 모두 VPN서버에 붙이시고,
이후에는 각 클라이언트 끼리 같은 네트워크에 물려있는 상황이니 문제 없을것 같은데..
2번하고 4번하고 상충되는거라 잘 모르겠네요 ㅠㅠ..
3번은 포트문제일 수 있으니 그부분 먼저 확인해보세요-
댓글 감사합니다!
클라이언트들을 모두 vpn에 붙인 상태에서 서로간 ssh가 안되는 상황인데 제가 지식이 짧아 어렵군요 ㅠㅠ
말씀 주신 부분 다시 한번 확인해 보겠습니다!
서로간 ssh가 안되시는상태라면 아마 방화벽 문제가아닐까 합니다.
저도 RDP로 테스트해봤는데 client간 rdp도 문제없이 됐었습니다!
서버 to client 역시 서버가 wireguard 클라이언트 연결 후 특정 ip로만 allowed ip 설정을 해주시면될듯합니다.
or 아예 모든 client /svr 을 외부의 zerotier를 이용해서 사설 SDN을 구축하는방법도있습니다
조언 감사합니다!
말씀해주신 부분 확인하고 공부해 보겠습니다!
VPN에 붙으면 기존에 가지고 있는 real IP 대신에 VPN접속 환경에서 부여되는 ip가 별도로 생성됩니다.
변경된 ip끼리 통신에 이상이 있는지부터 확인하시는게 좋을 것 같습니다.
vpn 연결 전에 클라이언트끼리 ping 문제 없이 작동되었다면,
모든 클라이언트가 vpn에 붙어있을때 핑테스트도 이상이 없어야 합니다.
그렇군요 ㅠㅠ
일단 확인부터 해봐야겠습니다.
정보 감사합니다!
저의 경우엔 외부에서 서버 관리는 guacamole 사용하고 있습니다,
달소님 정리한글도 있으니 한번 보세요
docker run --name guacamole -p 8080:8080 -v /volume1/docker/guacamole:/config oznu/guacamole
한줄로 끝납니다.
불륨만 조정하시고 web으로 접속하면 초기 사용자가 guacadmin/guacadmin이니 접속해서 사용자 바꾸시고 사용하시면
됩니다.
정보 공유 감사합니다!
해당 내용 한번 공부해서 적용해 보겠습니다!
cmt alert