실제 IP를 사용하여 LAN에서 NAT 뒤의 서버로 연결

실제 IP를 사용하여 LAN에서 NAT 뒤의 서버로 연결

나는 작은 네트워크를 가지고 있습니다. 회로망 인터넷(WAN)에 연결된 방화벽이 있고 실제 IP와 DNS 이름이 있으며 내부 네트워크(LAN)에 대한 DHCP 서버 역할도 합니다. 방화벽 컴퓨터에서 LAN에 있는 사이트 서버에 대한 포트 전달을 설정했습니다. 이 내 꺼야 nftables.conf:

#!/usr/sbin/nft -f

flush ruleset

define lan = eth0
define wan = eth1
define lan_addresses = 192.168.100.0/24
define server_address = 192.168.100.2
define server_http_port = 80
define server_https_port = 443

table firewall {
    map hosts {
        type ipv4_addr . ether_addr : verdict
            elements = {
                192.168.100.2  . 30:01:ED:BD:6B:CB : accept , # SERVER
                192.168.100.3  . 30:01:ED:BD:6B:C1 : accept , # CLIENT
            }
    }
    set remote_allowed {
            type ipv4_addr
            elements = { 91.198.174.192 , 209.51.188.148 }
    }
    chain prerouting {
        type nat hook prerouting priority 0; policy accept;
        # server
        iifname $wan ip protocol tcp tcp dport $server_http_port log prefix "Server HTTP Prerouted " dnat $server_address:$server_http_port
        iifname $wan ip protocol tcp tcp dport $server_https_port log prefix "Server HTTPS Prerouted " dnat $server_address:$server_https_port
    }
    chain postrouting {
        type nat hook postrouting priority 100; policy accept;
        ip saddr $lan_addresses oifname $wan masquerade
        # server
        iifname $wan ip protocol tcp ip saddr $server_address tcp sport $server_http_port log prefix "Server HTTP Postrouted " masquerade
        iifname $wan ip protocol tcp ip saddr $server_address tcp sport $server_https_port log prefix "Server HTTPS Postrouted " masquerade
    }
    chain input {
        type filter hook input priority 0; policy drop;
        # drop invalid, allow established
        ct state vmap {invalid : drop, established : accept, related : accept}
        # allow loopback
        iifname "lo" accept
        # allow ping from LAN
        iifname $lan ip saddr $lan_addresses ip protocol icmp icmp type echo-request accept
        # allow SSH from LAN
        iifname != $wan ip protocol tcp tcp dport 22 accept
        # allow SSH from allowed remotes
        iifname $wan ip protocol tcp ip saddr @remote_allowed tcp dport 22 accept
        # open SQUID, DHCP port for lan
        iifname $lan ip protocol tcp ip saddr $lan_addresses tcp dport {3128, 67} accept
        # LAN nice reject
        iifname != $wan ip saddr $lan_addresses reject with icmp type host-prohibited
    }
    chain forward {
        type filter hook forward priority 0; policy drop;
        ct state {established,related} accept
        # server
        iifname $wan ip protocol tcp ip daddr $server_address tcp dport $server_http_port log prefix "Server HTTP Forwarded To " accept
        iifname $lan ip protocol tcp ip saddr $server_address tcp sport $server_http_port log prefix "Server HTTP Forwarded From " accept
        iifname $wan ip protocol tcp ip daddr $server_address tcp dport $server_https_port log prefix "Server HTTPS Forwarded To " accept
        iifname $lan ip protocol tcp ip saddr $server_address tcp sport $server_https_port log prefix "Server HTTPS Forwarded From " accept
        # only allow selected machines to access internet
        iifname $lan oifname $wan ip saddr . ether saddr vmap @hosts
        iifname $lan oifname $wan reject
    }
    chain output {
        type filter hook output priority 0; policy accept;
    }
}

이 설정은 LAN에서 서버에 액세스하려고 시도하지 않는 한 잘 작동합니다. 이 경우 No route to host오류가 발생합니다.

> ping 192.168.100.1 # OK
> ping example.com # OK
> curl http://192.168.100.2 # OK
> curl http://192.168.100.1 # `No route to host`
> curl http://93.184.216.34 # `No route to host`
> curl http://example.com   # `No route to host`

방화벽 IP 또는 DNS 이름을 사용하여 LAN 서버에 액세스할 수 있도록 넷필터 구성을 어떻게 수정합니까?

PS 올바르게 구성하려면 이것이 필요합니다.기즈를 만나다 회의 녹화가 통과되었습니다.지가시, 사이트 URL을 사용하여 회의에 연결합니다.

PPS 이 구성은 지정된 클라이언트에 대해서만 인터넷에 대한 무제한 액세스를 허용합니다.

답변1

방화벽 구성을 건드리지 않고도 이 문제를 극복할 수 있었습니다. 로컬 서버 주소와 DNS 이름이 포함된 항목을 클라이언트 파일에 추가했습니다 /etc/hosts.

192.168.100.3   example.com

DHCP 서버를 통해서도 브로드캐스트할 수 있다고 생각합니다.

관련 정보