광섬유 연결이 있는 친구 집에서 호스팅할 집에서 만든 서버를 설정 중입니다(가정 전용 서버: HDS라고 함). 하지만 친구의 IP 연결을 직접 사용하고 싶지는 않습니다. 전용 서버(홈 전용 서버: HDS라고 함)의 연결을 사용하려면 자체 IP를 보호하고 우수한 DDoS 보호 기능을 제공하며 나머지 인터넷과의 상호 연결 일관성이 향상됩니다.
이 시점에서 지정된 전용 서버에 대한 보조("장애 조치"라고도 함) IP가 제공되었습니다. 새로 배포된 서비스 방향에 특정 포트 중복성을 추가할 필요 없이 마치 자체 인터페이스 IP인 것처럼 장애 조치를 통해 HDS에 직접 연결할 수 있도록 이 IP를 HDS에 대한 터널로 사용하고 싶습니다.
예:
- 보조 IP가 127.1.2.3이라고 가정해 보겠습니다.
- HDS의 포트 22에서 서비스를 호스팅하고 있습니다.
- 그러면 인터넷의 모든 클라이언트가 127.1.2.3:22에 연결하여 HDS에 직접 연결할 수 있습니다. - 반면, HDS는 2차 IP를 인터넷 접속을 위한 게이트웨이로 사용하게 됩니다.
문제는 이것을 설명하는 것이 실제로 어렵다고 확신하지만 이를 달성하는 방법이나 웹에서 무엇을 검색해야 할지 전혀 모른다는 것입니다. 이것이 제가 영감을 얻기 위해 여기에 온 이유입니다. 내 추측(그리고 희망)은 일부 스마트 라우팅 + VPN 연결이면 이를 달성하기에 충분할 것이라는 것입니다.
제가 달성하려는 목표를 이해하는 데 도움이 된다면 간단한 도면 회로도를 만들었습니다.
어떤 지침이라도 감사하겠습니다.
답변1
글쎄, 평소처럼 어려운 질문을 받으면 직장에서 긴 하루를 보낸 후 스스로 대답할 수 있습니다.
서버/게이트웨이용
나머지 예제에서는 내 서버의 기본값(인터페이스 및 공용 IP)이 dddd라고 가정합니다.
1) 장애 조치 IP(추가 IP)를 가져옵니다. 이 경우에는 f.f.f.f
2) 수신되면 이 IP를 추가합니다./etc/network/interfaces
auto eth0:0
iface eth0:0 inet static
address f.f.f.f
netmask 255.255.255.255
broadcast f.f.f.f
그런 다음 변경 사항을 적용합니다./etc/init.d/networking restart
3) openvpn 서버를 설정합니다. 시중에는 많은 튜토리얼이 있습니다. 대부분은 형편없는 튜토리얼입니다. 제가 드릴 수 있는 유일한 조언은 openvpn을 설치한 후 도움말 디렉토리에서 찾을 수 있는 기본 구성으로 시작하라는 것입니다. 따라서 우리의 목적에 맞게 적절한 서버를 구현하려면 구성의 상당 부분이 필요합니다.
내 경우에는 구성 파일이/etc/openvpn/servervpn.conf
# IP and protocols
local d.d.d.d # Listen to your default server IP
port 1194 # Default port, perfectly fine to me
proto udp # Heard there were issues with tcp
dev tap # Can use tun as well
# Certificates and encryption
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
tls-auth ta.key 0
cipher AES-256-CBC
# Tunnel network
server 10.8.0.0 255.255.255.0 # I'm sticking to default range which is fine
comp-lzo
# DNS servers provided by opendns.com.
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
# Keepalive
keepalive 10 120
# Safety
user nobody
group nogroup
persist-key
persist-tun
# Logging
status openvpn-status.log
log-append /var/log/openvpn.log
verb 5
mute 20
그런 다음 서비스를 다시 시작하십시오. 구성이 완벽하지 않으면 오류가 발생하지 않으며 로깅도 제공되지 않습니다. 행운을 빌어 문제를 찾으십시오.systemctl restart [email protected]
4) Iptables 장애 조치로 들어가는 트래픽을 VPN 터널로 리디렉션하고 VPN 클라이언트의 패킷을 네트워크로 중계해야 합니다. 이 부분이 가장 아쉬웠던 부분인데... 재미있게 즐겨주시길 바랍니다.
ffff를 장애 조치 IP로 바꾸십시오. 10.8.0.0/24가 기본 VPN 네트워크이므로 기본 네트워크를 사용하지 않는 경우 그에 따라 변경하십시오.
마지막 IP는 내 VPN 클라이언트 IP입니다. 변경될 수 있지만 제 경우에는 10.8.0.4입니다.
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j SNAT --to-source f.f.f.f
iptables -t nat -A PREROUTING -d f.f.f.f -j DNAT --to-destination 10.8.0.4
VPN 클라이언트(홈 서버)의 경우
1) MAC 할당을 사용하여 홈 서버에 고정 IP를 할당하므로 내 로컬 홈 서버 IP는 192.168.1.2이지만 중요하지 않습니다. 2) 포트 1194 udp를 리디렉션합니다(OpenVPN의 기본 포트이지만 모든 포트를 사용할 수 있습니다). 선호) 로컬 서버 IP를 사용합니다(제 경우에는 192.168.1.2). 3) openvpn을 설치하고 VPN 서버에 연결합니다. 이와 관련된 수많은 튜토리얼이 있지만 /etc/openvpn/client.conf
제 경우에도 중요한 설정은 다음과 같습니다.
client
remote d.d.d.d 1194 # your server main/default IP
dev tap # can use tun as well
proto udp # tcp seems to have issues
remote my-server-1 1194
resolv-retry infinite
user nobody
group nogroup
# Try to preserve some state across restarts.
persist-key
persist-tun
# Certs
ca ca.crt
cert client1.crt
key client1.key
ns-cert-type server
tls-auth ta.key 1
cipher AES-256-CBC # Might vary depending on how you set it
# Compression
comp-lzo
# Log verbosity
verb 3
그런 다음 클라이언트를 다시 시작하십시오. systemctl restart[이메일 보호됨]
방화벽 정책이 모든 것을 허용하도록 설정되어 있는지 확인하고(무엇을 하고 있는지 모르는 경우) 계속 진행하세요.
이제 서비스가 VPN IP 또는 0.0.0.0을 수신해야 하는 경우가 아니면 장애 조치 IP가 홈 서버의 IP인 것처럼 작동해야 합니다.
이 기사가 다른 사람들에게 도움이 되기를 바랍니다.
이 프랑스어 기사 덕분에 필요한 iptables를 찾았습니다. 감사합니다.http://www.guiguishow.info/2013/06/14/vpn-unipersonnel-avec-une-ip-failover-en-sortie-sur-un-dedie-ovh/