我正在尝试在公有子网中的 EC2 实例上使用 squid 设置 DNS 筛选。将允许通过/阻止来自私有子网的 EC2 实例通过公有 EC2 实例。
如果我SSH到私有EC2实例并运行curlgoogle.com
,什么都不会发生(google.com在我的whitelist.txt文件中)。/var/log/squid/access.log
没有显示新条目。
如果我运行ssh
我认为存在配置错误。为了调试这种情况,我需要知道什么?有没有办法知道路由在哪里失败(从实例或AWS控制台)?我已经验证了VPC设置、路由表和安全组权限,但看不出缺少什么。
我从AWS控制台并通过EC2实例中的SSH手动进行了设置。
我的设置是:
<李> 10.0.0.0/16 < ul > < li >公共子网:10.0.0.0/20 < li >专用子网1: 10.0.128.0/20 < li >专用子网2: 10.0.144.0/20
公共rtb:
- 2016年0月10日-
- 10.0.0.0/16 -
< li >公共-sg: < ul > < li >从10.0.0.0/16开始允许所有ICMP-IP v4 < li >允许从我的本地IP使用SSH < li >从10.0.0.0/16开始允许HTTPS (TCP IPV4,端口443 ) < li >从10.0.0.0/16开始允许HTTP (TCP IPV4,端口80 )
- SSH允许从10.0.0.0/16开始
- 自身允许的所有流量
- 公有子网中安装并配置了 squid 的 EC2 实例
- 私有子网中有 2 个私有实例
鱿鱼设置:
- 在公有 EC2 实例中设置开放证书
mkdir /etc/squid/ssl
cd /etc/squid/ssl
openssl genrsa -out squid.key 4096
openssl req -new -key squid.key -out squid.csr -subj "/C=XX/ST=XX/L=squid/O=squid/CN=squid"
openssl x509 -req -days 3650 -in squid.csr -signkey squid.key -out squid.crt
cat squid.key squid.crt >> squid.pem
visible_hostname squid
cache deny all
# Log format and rotation
logformat squid %ts.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ru %ssl::>sni %Sh/%<a %mt
logfile_rotate 10
debug_options rotate=10
# Handle HTTP requests
http_port 3128
http_port 3129 intercept
# Handle HTTPS requests
https_port 3130 cert=/etc/squid/ssl/squid.pem ssl-bump intercept
acl SSL_port port 443
http_access allow SSL_port
acl step1 at_step SslBump1
acl step2 at_step SslBump2
acl step3 at_step SslBump3
ssl_bump peek step1 all
# Deny requests to proxy instance metadata
acl instance_metadata dst 169.254.169.254
http_access deny instance_metadata
# Filter HTTP requests based on the whitelist
acl allowed_http_sites dstdomain "/etc/squid/whitelist.txt"
http_access allow allowed_http_sites
# Filter HTTPS requests based on the whitelist
acl allowed_https_sites ssl::server_name "/etc/squid/whitelist.txt"
ssl_bump peek step2 allowed_https_sites
ssl_bump splice step3 allowed_https_sites
ssl_bump terminate step2 all
http_access deny all
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3129
sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 3130
我认为这里的问题是,在您的配置文件中,您有http_access拒绝所有
,但没有ACL允许来自任何网络的流量
例如(从squid.conf
模板):
acl localnet src 0.0.0.1-0.255.255.255 # RFC 1122 "this" network (LAN)
acl localnet src 10.0.0.0/8 # RFC 1918 local private network (LAN)
acl localnet src 100.64.0.0/10 # RFC 6598 shared address space (CGN)
acl localnet src 169.254.0.0/16 # RFC 3927 link-local (directly plugged) machines
acl localnet src 172.16.0.0/12 # RFC 1918 local private network (LAN)
acl localnet src 192.168.0.0/16 # RFC 1918 local private network (LAN)
acl localnet src fc00::/7 # RFC 4193 local private network range
acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
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
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localhost
http_access allow localnet
http_access deny all
为简单起见,您可以在配置文件的开头添加这两行(必须在< code>http_access deny all之前):
acl acl_name src your_public_ip
http_access allow acl_name
我可以就我正在进行的AWS VPC实验室练习寻求帮助吗?谢谢 我创建了一个新的 VPC,分别是公有子网和私有子网,然后分别在每个子网中启动了 2 个 EC2 实例。我还设置了在私有子网安全组上进行 ping (ICMP) 访问所需的安全组。但是,我无法从公有子网中的实例 ping 私有子网中的实例。 以下是设置: VPC:(CIDR块10.0.0.0/16) 公共子网:(CIDR区块10.0.1.
是否有人在VPC的公共子网中配置了NLB以将流量路由到私有子网中的EC2实例? 使用ELB时,一个好的解决方案是为ELB创建一个安全组,然后为私有EC2实例创建另一个安全组,允许来自该ELB安全组的传入流量,如下所述: https://aws.amazon.com/premiumsupport/knowledge-center/public-load-balancer-private-ec2/ “
我在AWS中有一个公共子网,我在其中有3个实例。。。 WebApp01 (例如弹性 IP - 54.23.61.239) WebApp02 (私有 IP - 192.168.0.24) 虚拟应用程序03 (私有 IP - 192.168.0.25) 我的路由表设置为192.168.0.0/16 - 我可以看到拥有公共IP的实例可以访问互联网,但没有公共IP的实例无法访问互联网。 如何让Intern
我是StackOverflow的新手,如果我需要编辑这篇文章以使其更清晰,请告诉我。 目标:通过位于公用子网内的wireguard vpn(这些子网都在同一VPC内),通过专用子网内HTTP/HTTPS web应用实例访问。 情况: 我有一个VPC: 1个公共子网,其中包含运行wireguard VPN的ec2实例 4个私有子网,分别包含运行单个web应用程序的ec2(基于bitnami图像)。w
我已经设置了下面的VPC配置,但SSH到该实例目前没有发生: 创建新VPC 创建了公用和专用子网 将ec2实例启动到公共子网,更新了互联网网关的路由表 已将ec2实例启动到专用子网 将一个natgateway与EIP中的公用子网关联 已使用natgateway更新专用子网的路由表 从公共实例到私有实例的SSH不会发生在密钥对上。你能告诉我我错过了什么吗?
一个和我一起工作的人给了我EC2证书,让我登录到他的EC2控制台。不是我设计的。一些实例显示公共dns名称,而另一些实例具有空白的公共dns。我希望能够连接到具有空白公共DNS的实例。我一直无法理解为什么这些显示为空白。