퍼블릭 IP를 원격 컴퓨터로 터널링


8

5 개의 공용 IP 주소 블록 이있는 Linux 서버 A8.8.8.122/29있습니다. 현재에 8.8.8.122지정되어 eth0있으며 8.8.8.123에 지정되어 eth0:1있습니다.

NAT 뒤에 원격 위치에 다른 Linux 시스템 B 가 있습니다. B 가 IP 주소 8.8.8.123를 기본 IP 주소로 사용할 수 있도록 둘 사이에 터널을 설정하고 싶습니다 .

OpenVPN이 아마도 답이지만, 설정 방법을 알 수는 없습니다 ( topology subnet또는 topology p2p적절할 수도 있습니다. 또는 이더넷 브리징을 사용해야합니까?). 이 시점에서 보안 및 암호화는 큰 관심사가 아니므로 GRE도 괜찮을 것입니다. 시스템 B 는 알려진 IP 주소에서 올 것이며이를 기반으로 인증 될 수 있습니다.

어떻게해야합니까? 누구나이 상황에서 작동 할 수있는 OpenVPN 구성 또는 다른 접근법을 제안 할 수 있습니까? 이상적으로는 클라이언트가 자격이없는 IP를 사용하지 않고도 여러 클라이언트를 처리 할 수 ​​있습니다 (예 : 4 개의 예비 IP를 모두 다른 컴퓨터와 공유).


두 위치에 어떤 방화벽이 있습니까?
로버트

1
실제로 Google에서 일하기보다는 주소를 만들어 주시기 바랍니다. 그렇지 않으면 주소 공간을 사용할 수 없습니다.
Michael Hampton

Robert : A 는 간단한 iptables규칙 이있는 Linux 서버입니다 . B 는 실행중인 다른 Linux 서버 인 NAT 뒤에 shorewall있습니다.
Jim Paris

Michael : 예, 처음 세 옥텟을 난독 처리하기 위해 8 개의 옥텟으로 변경했지만 여전히 공개되어 있습니다. 죄송합니다. Google
Jim Paris

1
나중에 참조 할 수 있도록 RFC가 있습니다.
Michael Hampton

답변:


7

이더넷 브리징으로 끝났습니다. 온라인으로 넘어가는 매우 장황한 예제가 많이 있지만 꽤 쉬운 것으로 밝혀졌습니다.

먼저,에 , 변경되었습니다 :/etc/network/interfaces

auto eth0
iface eth0 inet static
    address 8.8.8.122
    netmask 255.255.255.248
    gateway 8.8.8.121

에:

auto br0
iface br0 inet static
    address 8.8.8.122
    netmask 255.255.255.248
    gateway 8.8.8.121
    pre-up openvpn --mktun --dev tap0
    bridge_ports eth0 tap0
    bridge_fd 3

부팅시 ( eth0실제 WAN 인터페이스)를 tap0(새로운 터널 인터페이스) 와 브리지하기 위해 .

그런 다음 A 에서 다음을 사용하여 openvpn 서버를 실행하십시오.

openvpn --dev tap0

B , 그것과 연결 :

openvpn --remote 8.8.8.122 --dev tap0 --route-gateway 8.8.8.121 \
        --redirect-gateway def1 --ifconfig 8.8.8.123 255.255.255.248

그것은 내가 찾던 매우 간단한 구성 이며 작동합니다 .B 는 이제 8.8.8.123에서 공개적으로 액세스 할 수 있으며 발신 연결은 동일한 주소에서 시작됩니다.

물론 필요에 따라 보안 ( --secret, --tls-server등)을 추가하십시오 .


좋은! 나는 그것을 시도 할 것입니다. "클라이언트에게 권한이없는 IP를 사용하지 않고"구성하는 방법을 찾았습니까?
Bastian

나는 내 설정을 귀찮게하지 않았지만 (임시적임), ebtables로 할 수 있다고 상상합니다.
Jim Paris

매우 유용한. 질문 : A에서 두 개의 IP를 라우팅 해야하는 경우 A 구성에서 변경해야 할 사항 : A => B 및 A => C (C는 다른 호스트입니다)? 다른 브리지를 구성해야합니까?
frhack

2
네. 다른 pre-up openvpn줄을 tap1추가 tap1하여 추가 하고 bridge_ports에 추가 한 다음 openvpn의 다른 인스턴스를로 실행하십시오 openvpn --dev tap1.
Jim Paris

LAN상의 모든 시스템이 B를 사용하고 원격 기본 게이트웨이를 할당하고 공용 IP를 사용할 수 있도록 B를 통해 A의 게이트웨이를 로컬로 만들려면 어떻습니까?
Areeb Soo Yasir

1

당신은 내가 생각하기 힘든 시간을 보낼 것입니다. VPN의 양쪽이 동일한 서브넷에있는 경우 대부분의 방화벽은 OpenVPN 트래픽을 라우팅하는 데 어려움이 있습니다.

공개 액세스를 위해 라우팅하려는 경우 두 서버를 공개 주소와 다른 서브넷으로 옮긴 다음 가상 IP (1-1 Nat)를 사용하여 연결합니다. 두 사이트를 연결하기 위해 OpenVPN이 작동하거나 IP-Sec 터널이됩니다.

가상 IP : http://doc.pfsense.org/index.php/What_are_Virtual_IP_Addresses%3F

사이트 간 : http://doc.pfsense.org/index.php/VPN_Capability_IPsec

주석을 기준으로 편집 :

개인적으로 A 상자에 pfSense를 설치하고 원하는 WAN 포트를 지정합니다. 그런 다음 로컬 서브넷에 OpenVPN 서버를 설정하고 (pfSense 웹 인터페이스에 모두 준비 됨) 가상 IP가 로컬 OpenVPN IP를 가리키는 다른 시스템을 설정하십시오. 이렇게하면 나중에 확장 할 여지가 생길 수 있습니다 (가상 IP를 사용하는 머신 추가, 논리적으로 특정 포트를 다른 서버로 전달, 가상 액세스를 위해 OpenVPN을 사용하여 LAN / WAN / DMZ 설정이 완전히 중단되었습니다). 완전히 끊어진 라우터이므로 더 안전 할 것입니다.


중간 방화벽이 어떻게 사용되는지 이해할 수 없습니다. 그들은 확실히 AB 사이의 OpenVPN 패킷 내부를 보지 않을 것입니다 . OpenVPN 구성 자체의 push "route 50.7.19.122 255.255.255.255 net_gateway"경우 VPN 데이터가 일반 네트워크를 통해 여전히 푸시되도록 할 것으로 기대했습니다 .
Jim Paris

분명히하기 위해 각 끝에 별도의 방화벽이 아닌 AB 사이에 직접 터널을 만들고 싶습니다 .
Jim Paris

1
그러나 컴퓨터 A가 컴퓨터 B로 라우팅하려고 할 때 WAN (공용 IP 포함), LAN (정적 IP 사용) 또는 OpenVPN (공용 IP 포함)을 모두 사용해야하는지 알 수 없습니다. 동일한 서브넷. B에서 A로 작동해야합니다.
Robert

1
또한 이것이 있습니다. 공용 IP로는 작동하지 않지만 작동했습니다. 가상 IP는 어느 쪽이든 훨씬 나을 것이라고 생각합니다. openvpn.net/index.php/open-source/documentation/miscellaneous/…
Robert

"분명히 말해서, 각 끝에 별도의 방화벽이 아닌 A와 B 사이에 직접 터널을 만들고 싶습니다." OpenVPN 서버를 위해 어딘가에 포트를 열어야합니다
Robert
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.