Назад | Перейти на главную страницу

Как исправить проблему установления связи TLS при пересылке пакетов между двумя NAT?

Существует локальная сеть с маршрутизатором Wifi, работающим как сервер NAT, который подключен к интернет-провайдеру. Между маршрутизатором и интернет-провайдером необходимо установить брандмауэр, который фильтрует входящий и исходящий трафик, поскольку встроенный в маршрутизатор брандмауэр слишком упрощен.

Таким образом, между маршрутизатором и интернет-провайдером была добавлена ​​машина с двумя сетевыми адаптерами (предполагаемый межсетевой экран), на которой запущен Debian Stretch:

[Wifi router(NAT server)]- - - - -[eth1]=[firewall(NAT server)]=[ppp0]
     |                                                            |
     |                                                            |
     |                                                            |
[local network]                                                 [ISP]

В настоящее время межсетевой экран тестируется только при пересылке пакетов между провайдером и маршрутизатором, поэтому в него было добавлено только три правила пересылки iptables:

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -o ppp0 -j ACCEP

Этих правил явно недостаточно для выполнения безупречной пересылки, потому что некоторые https-адреса больше не могут открываться в браузерах в локальной сети и зависают со строкой «Perfoming TLS handshaking ...» в строке состояния.

Примечательно, что почти все основные веб-сайты, такие как Gmail, YouTube, Bing, Reddit и т. Д., Не имеют этой проблемы. Таким образом, причина этой проблемы может быть в разных версиях протокола TLS, разных классах сертификатов или другой конфигурации и т. Д.

Интерфейсы на машине брандмауэра настроены следующим образом:

$ ip link
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether <MAC_ADDRESSS>
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 1000
    link/ether <MAC_ADDRESS>
4: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1460 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 3
    link/ppp 

$ ip addr
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether <MAC_ADDRESS>
    inet 10.*.*.*/21 brd 255.255.255.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 ***/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
    link/ether <MAC_ADDRESS>
    inet 192.168.2.1/24 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 ***/64 scope link 
       valid_lft forever preferred_lft forever
4: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1460 qdisc pfifo_fast state UNKNOWN group default qlen 3
    link/ppp 
    inet 10.*.*.* peer 81.*.*.*/32 scope global ppp0
       valid_lft forever preferred_lft forever

Как решить эту проблему?