OpenVPNAS 서버의 IPTable 및 포트 전달

OpenVPNAS 서버의 IPTable 및 포트 전달

CentOS 7(CentOS 7과 연결되지 않음)에서 실행되는 새로운 OpenVPNas 서버가 있습니다. 값비싼 상용 VPN을 공용 고정 IP로 교체하려고 합니다. OpenVPNas 서버가 개인 VPN 서버 역할을 하기 때문에 상업용 서버를 교체하려면 몇 개의 포트만 고정 내부 VPN 주소로 전달하면 됩니다.

VPN 클라이언트를 설정하고 서버에서 클라이언트의 고정 IP로, 고정 IP에서 서버의 공용 IP로 ping할 수 있습니다.

서버 IP의 다음 포트를 내부 VPN으로 전달/NAT/가장하고 싶습니다.

공개 TCP 80은 서버의 공개입니다: 80 -> 172.28.28.28:80
공용 UDP 포트 2074-2093
공용 TCP 포트 15425-15427
공용 UDP 포트 5198-5200
공용 TCP 포트 5198-5200

route다른 / 명령을 시도했지만 iptables아직 마법의 총알을 찾지 못했습니다. 나는 이것이 간단한 과정이라고 생각하지만 해결책이 나를 혼란스럽게 합니다. SSH를 통해 서버는 VPN 포트 80에 연결할 수 있으며 VPN의 웹 인터페이스를 통해 클라이언트의 포트를 얻을 수 있습니다. 따라서 기본 라우팅이 예상대로 작동합니다.

서버 페이지의 포트 80으로 향하는 패킷을 전달하기 위해 라우팅하는 마법의 방법을 알 수 없습니다.

[root@vpn ~]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

[root@vpn ~]# 라우팅 -n
커널 IP 라우팅 테이블
Iface를 사용하는 대상 게이트웨이 Genmask 마크 메트릭 참조
0.0.0.0 209.182.218.1 0.0.0.0 UG 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 유 1002 0 0 eth0
172.27.224.0 0.0.0.0 255.255.252.0 유 0 0 0 as0t0
172.27.228.0 0.0.0.0 255.255.252.0 유 0 0 0 as0t1
172.27.232.0 0.0.0.0 255.255.252.0 유 0 0 0 as0t2
172.27.236.0 0.0.0.0 255.255.252.0 유 0 0 0 as0t3
172.28.28.28 0.0.0.0 255.255.255.255 어 0 0 0 as0t0
209.182.218.0 0.0.0.0 255.255.255.0 유 0 0 0 eth0

[root@vpn ~]# IP 라우팅 목록
기본값은 209.182.218.1 dev eth0입니다.
169.254.0.0/16 dev eth0 범위 링크 메트릭 1002
172.27.224.0/22 ​​​​dev as0t0 프로토타입 커널 범위 링크 src 172.27.224.1
172.27.228.0/22 ​​​​dev as0t1 프로토타입 커널 범위 링크 src 172.27.228.1
172.27.232.0/22 ​​​​dev as0t2 프로토타입 커널 범위 링크 src 172.27.232.1
172.27.236.0/22 ​​​​dev as0t3 프로토타입 커널 범위 링크 src 172.27.236.1
172.28.28.28 dev as0t0 원래 정적
209.182.218.0/24 dev eth0 프로토타입 커널 범위 링크 src 209.182.218.187

[root@vpn ~]# ifconfig
as0t0: 플래그=4305 mtu 1500
        inet 172.27.224.1 넷마스크 255.255.252.0 대상 172.27.224.1
        inet6 fe80::4da2:53e9:7fba:8f11 prefixlen 64scopeid 0x20
        지정되지 않음 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 200(UNSPEC)
        RX 패킷 219바이트 13438(13.1KiB)
        RX 오류 0 드롭 0 오버플로 0 프레임 0
        TX 패킷 250바이트 202093(197.3KiB)
        TX 오류 0 드롭 0 오버플로 0 캐리어 0 충돌 0

as0t1: 플래그=4305 mtu 1500
        inet 172.27.228.1 넷마스크 255.255.252.0 대상 172.27.228.1
        inet6 fe80::d557:1adc:c34c:4954 prefixlen 64scopeid 0x20
        지정되지 않음 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 200(UNSPEC)
        RX 패킷 0바이트 0(0.0B)
        RX 오류 0 드롭 0 오버플로 0 프레임 0
        TX 패킷 3바이트 144(144.0B)
        TX 오류 0 드롭 0 오버플로 0 캐리어 0 충돌 0

as0t2: 플래그=4305 mtu 1500
        inet 172.27.232.1 넷마스크 255.255.252.0 대상 172.27.232.1
        inet6 fe80::be1a:bfd3:3c25:20f9 prefixlen 64scopeid 0x20
        지정되지 않음 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 200(UNSPEC)
        RX 패킷 0바이트 0(0.0B)
        RX 오류 0 드롭 0 오버플로 0 프레임 0
        TX 패킷 3바이트 144(144.0B)
        TX 오류 0 드롭 0 오버플로 0 캐리어 0 충돌 0

as0t3: 플래그=4305 mtu 1500
        inet 172.27.236.1 넷마스크 255.255.252.0 대상 172.27.236.1
        inet6 fe80::bfed:3f81:6938:bbc7 prefixlen 64scopeid 0x20
        지정되지 않음 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 200(UNSPEC)
        RX 패킷 0바이트 0(0.0B)
        RX 오류 0 드롭 0 오버플로 0 프레임 0
        TX 패킷 3바이트 144(144.0B)
        TX 오류 0 드롭 0 오버플로 0 캐리어 0 충돌 0

eth0: 플래그=4163mtu 1500
        inet 209.182.218.187 넷마스크 255.255.255.0 브로드캐스트 209.182.218.255
        inet6 fe80::216:3eff:fecc:ddf3 prefixlen 64 범위 ID 0x20
        이더넷 00:16:3e:cc:dd:f3 txqueuelen 1000(이더넷)
        RX 패킷 11673바이트 1350674(1.2MiB)
        RX 오류 0 드롭 14 오버플로 0 프레임 0
        TX 패킷 5295바이트 1099520(1.0MiB)
        TX 오류 0 드롭 0 오버플로 0 캐리어 0 충돌 0

짜잔: 플래그=73 mtu 65536
        inet 127.0.0.1 넷마스크 255.0.0.0
        inet6::1 prefixlen 128scopeid 0x10
        Loop txqueuelen 1000(로컬 루프백)
        RX 패킷 9바이트 748(748.0B)
        RX 오류 0 드롭 0 오버플로 0 프레임 0
        TX 패킷 9바이트 748(748.0B)
        TX 오류 0 드롭 0 오버플로 0 캐리어 0 충돌 0

답변1

OpenVPN-AS에 인터페이스에 동적 또는 고정 공용 IP가 할당되어 있다고 가정합니다.이더넷 0, 방화벽 규칙을 생성할 때 인터페이스 이름을 사용합니다. 이 접근 방식을 사용하면 두 경우 모두에서 규칙이 작동합니다. 이 경우 구성해야 합니다.대상 NAT

VPN 서버에 터널 인터페이스가 있는 경우Tun0IP는172.28.28.1IP가 있는 내부 웹 서버172.28.28.28청취 포트80

$ sudo iptables -t nat -A PREROUTING -p tcp -m tcp   -d eth0   --dport 80 -j DNAT --to-destination 172.28.28.28
$ sudo iptables -t nat -A POSTROUTING -o tun0  -p tcp -m tcp   -d 172.28.28.28  --dport 80 -j SNAT --to-source 172.28.28.1

관련 정보