外部端口 80 无法与 Squid 的 IPTables 配合使用

外部端口 80 无法与 Squid 的 IPTables 配合使用

我无法从 IPtables 和 Squid 配置的 LAN 外部访问端口 TCP 80。

这些是我的 iptables 规则:

# RESET
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X

# Pas de filtrage sur l'interface lo
iptables -A INPUT -i lo -j ACCEPT

# Debut des reles de firewall
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state NEW ! -i eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# LAN VERS le NET
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

# J'autorise le port 22, 80
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# J'autorise ICMP et IGMP
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -p igmp -j ACCEPT

# NAT
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

# Squid3
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 10.32.25.1:3128
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

iptables -A FORWARD -i eth1 -o eth1 -j REJECT

这是我的内容squid3.conf

http_port 3128 transparent

# Attention si vous modifiez les valeurs de la ligne suivante : lancez squid3 -f /etc/squid3/squid.conf -z pour reconstruire le cache !
cache_dir ufs /var/spool/squid3 8192 512 512
cache_mem 512MB

# Les journaux
cache_access_log /var/log/squid3/access.log common
cache_log /var/log/squid3/cache.log
cache_store_log /var/log/squid3/store.log
cache_swap_log /var/log/squid3/cache_swap.log
emulate_httpd_log on

# Configuration minimum recommandee

# Bloquer
#acl youtube_domains dstdomain .youtube.com .googlevideo.com .ytimg.com
#http_access deny youtube_domains

acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT

# Denition des reseseaux
acl network_home_010032025000 src 10.32.25.0/26

# Les acces ou non
http_access allow network_home_010032025000
http_access deny all

# On renseigne le nom de machine qui fait serveur
visible_hostname home

#   Hidden my domain
append_domain .home.da....

网络内部一切正常。Squid 正常运行,NAT 运行正常。

但是,当我想从外部访问时,端口 80 不起作用。我可以使用 SSH 从外部登录,但当我尝试使用端口 80(网站)从外部访问时,Squid 会给我一个错误。当我从外部访问我的 IP 时,Squid 告诉我“访问被拒绝”。

有什么帮助吗?谢谢。

eth0局域网(10.32.25.0/26)

eth1WAN 网关(10.30.25.0/26)/(外部 IP 69..*)

答案1

经过深入研究,我发现在重定向到端口 80 时需要指定源。PREROUTING以下是我在 IPTables 配置中编辑的内容:

替换此行

#iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

...用这一行

iptables -t nat -A PREROUTING -i eth1 -p tcp -s 10.32.25.0/26 --dport 80 -j REDIRECT --to-port 3128

我已经添加-s 10.32.25.0/26,因此该规则仅适用于我的内部网络。

相关内容