我需要帮助配置以下场景:小型机构网络的 Web 浏览是通过代理服务器进行的,该代理服务器在 Debian 中配置为代理/防火墙(使用 iptables 规则)并连接到父代理,并进行身份验证。LAN 的客户端不会向外部进行任何类型的 DNS 查询,因为所有 Web 浏览都是通过代理进行的,不需要其他类型的外部服务访问。现在:我们必须访问特定 IP 地址 xxx.xxx.xxx.xxx 的 jitsi 服务器。对该 jitsi 服务器的 Web 访问没有问题,因为代理会处理它,但是对于分别发送到 UDP 端口 10000 和 TCP 4443 的数据包,我还没有设法在 iptables 规则中处理它们。
网络方案如下:
eth0 上的 LAN(192.168.0.0/24)----(192.168.0.1 ens18)debian 代理/防火墙(192.168.1.2 ens19)--(192.168.1.1)调制解调器路由器---->ISP
iptables规则如下:
*filter
:FORWARD DROP [0:0]
:INPUT DROP [0:0]
:OUTPUT DROP [0:0]
# ##### INPUT chain ###### Accept relate or stablished connections
-A INPUT -m conntrack ! -i lo --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type echo-request -j ACCEPT
-A INPUT -p udp -m udp -m conntrack --dport 33434:33534 --ctstate NEW -j REJECT
# Anti spoofing rule
-A INPUT ! -s 192.168.0.0/24 -i ens18 -j LOG --log-prefix "SPOOFED PKT "
-A INPUT ! -s 192.168.0.0/24 -i ens18 -j DROP
# LAN TO PROXY LOCAL
-A INPUT -p tcp -m state -s 192.168.0.0/24 -i ens18 --dport 8080 --state NEW -j ACCEPT
# ACCESS TO WEB REPORTS
-A INPUT -p tcp -m state -s 192.168.0.2/24 -i ens18 --dport 80 --state NEW -j ACCEPT
# ACCESS TO SSH
-A INPUT -p tcp -m state -s 192.168.0.2/24 -i ens18 --dport 22 --state NEW -j ACCEPT
# TIME SYNC FOR LAN
-A INPUT -p udp -i ens18 -m state --sport 123 --state NEW -j ACCEPT
# WEBMIN ACCESS
-A INPUT -p tcp -m state -s 192.168.0.2/24 -i ens18 --dport 10000 --state NEW -j ACCEPT
# LOG the rest and drop by default input chain
-A INPUT ! -i lo -j LOG --log-prefix "DROP INPUT " --log-ip-options --log-tcp-options
-A OUTPUT -m state --state INVALID -j LOG --log-prefix "DROP INVALID " --log-ip-options --log-tcp-options
-A OUTPUT -m state --state INVALID -j DROP
-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# ##### OUTPUT chain ###### ## ACCEPT rules for allowing connections out
-A OUTPUT -p tcp -m state --dport 21 --state NEW -j ACCEPT
-A OUTPUT -p tcp -m state --dport 80 --state NEW -j ACCEPT
-A OUTPUT -p tcp -m state --dport 443 --state NEW -j ACCEPT
-A OUTPUT -p udp -m state --dport 123 --state NEW -j ACCEPT
# external DNS servers (only reachable, no recursion enabled)
-A OUTPUT -p udp -m state -d XXX.XXX.XXY.131 --dport 53 --state NEW -j ACCEPT
-A OUTPUT -p tcp -m state -d XXX.XXX.XXX.132 --dport 53 --state NEW -j ACCEPT
-A OUTPUT -m state -d XXX.XXX.XXX.68 --state NEW -j ACCEPT
**# TRYING TO REACH JITSI SERVER
-A OUTPUT -m state -d XXX.XXX.ZXX.XXX --state NEW -j ACCEPT**
-A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
# ##### FORWARD chain ###### Accept relate or stablished connections
-A FORWARD -m state --state INVALID -j LOG --log-prefix "DROP INVALID " --log-ip-options --log-tcp-options
-A FORWARD -m state --state INVALID -j DROP
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD ! -s 192.168.0.0/24 -i ens18 -j LOG --log-prefix "SPOOFED PKT "
-A FORWARD ! -s 192.168.0.0/24 -i ens18 -j DROP
# prevent forwarding packets for connections initiated from the outside (spoofing)
-A FORWARD -m state -i ens19 --state NEW -j DROP
# ## default log rule
-A FORWARD ! -i lo -j LOG --log-prefix "DROP FORWARD " --log-ip-options --log-tcp-options
COMMIT
# Completed
# Generated by webmin
*mangle
:OUTPUT ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# Completed
# Generated by webmin
*nat
:OUTPUT ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
# SOURCE NAT FOR LAN NETWORK ON
-A POSTROUTING -o ens19 -j SNAT --to-source 192.168.1.2
# MASQUERADE (FOR DYNAMIC IP ADDRESSS IN CASE OF DHCP MODEM)
-A POSTROUTING -s 192.168.0.0/24 -o ens19 -j MASQUERADE
COMMIT
# Completed
**** 使用这些相同的防火墙规则,我们可以访问服务器上的视频会议https://meet.jit.si没有问题。xxx.xxx.xxx.xxx 的 jitsi 服务器管理员认为只需要访问端口 UDP 10000 和 TCP 4443(正如我所解释的那样),当然还有 443(由网络代理处理)