위의 네트워크 다이어그램에서 내 목표는 192.168.20.20
시스템 A에서 핑을 보내는 것 입니다. 라우터를 구성하고 싶지 않습니다.
이것을 달성하기 위해
모든 트래픽은
192.168.20.0/24
먼저 다음으로 전달되어야 합니다.10.200.8.14
그러면 시스템 B에는 경로가 있어야 합니다.
192.168.20.20.
192.168.20.0/24
네트워크에 도달하기 위한 기본 게이트웨이가 다음과 같도록 시스템 A에 경로를 추가하는 방법이 있습니까? 이러한 10.200.8.14.
경로가 추가된 경우에도 연결하려면 10.200.8.14
여전히 기본 게이트웨이가 필요합니다.10.201.11.1.
이것을 달성하는 방법을 제안해주세요.
답변1
가장 먼저 떠오르는 것은 SSH 기반 VPN입니다. PermitTunnel을 보고 man sshd_config
검색합니다.
PermitTunnel
먼저 (두 호스트 모두) 활성화되어 있고 PermitRootLogin
(systemB에서) 다시 로드되었는지 확인하세요 yes
.without-password
/etc/ssh/sshd_config
sshd
그런 다음 다음 명령을 사용하여 호스트 10.200.8.14에 로그인합니다.
# ssh -NTCf -w 0:0 10.200.8.14
다음 단계는 개인 VPN 서브넷(이 예에서는 192.168.10.0)으로 인터페이스를 구성하는 것입니다.
systemA # ip link set tun0 up
systemA # ip addr add 192.168.10.10/32 peer 192.168.10.20 dev tun0
systemB # ip link set tun0 up
systemB # ip addr add 192.168.10.20/32 peer 192.168.10.10 dev tun0
그런 다음 시스템 B 뒤에 네트워크에 대한 경로를 추가합니다.
systemA # ip route add 192.168.20.0/24 via 192.168.10.10
systemA # ping 192.168.20.20
또 다른 방법 sshuttle
은 sshuttle
. 그런 다음 다음을 실행하십시오.
systemA # /usr/sbin/sshuttle -D --pidfile /tmp/sshuttle.pid --dns -r user@systemB 192.168.20.0/24
트래픽을 라우팅하는 데 사용되므로 sudo
비밀번호가 필요합니다 . 다음을 사용하여 비밀번호를 묻지 않도록 파일을 변경할 iptables
수 있습니다 ./etc/sudoers
visudo
systemA # visudo
# add:
myuser ALL=(ALL) NOPASSWD: /sbin/iptables, /usr/bin/python
몇 가지 흥미로운 참고자료:
https://help.ubuntu.com/community/SSH_VPN
http://sleepyhead.de/howto/?href=vpn
https://github.com/apenwarr/sshuttle
답변2
SSH를 통한 VPN 단계를 따랐습니다. 그러나 문제는 arp 구문 분석에서 발생합니다.
192.168.10.0/24 경로를 추가한 후.
System C : route add -net 192.168.10.0/24 p255p2
arp 해결을 위해 다음 명령을 실행합니다.
System B : sudo arp -sD 192.168.10.10 eth1 pub
이 단계 후에 Ping이 작동했습니다.
이러한 단계가 필요합니까?