こんにちは、UOZUです!
今回は、さくらのクラウドでローカルIPのみを持つサーバーからの外部通信を簡単にしてみようと思います。
前提の構成は以前と同様に以下の通りです。
また検証はAlmaLinux release 10.2で実施しています。

通常はローカルIP宛のみ通信可能
構成上当然ですが、現在はローカルIP同士でしか通信ができない為、dnfコマンドからのパッケージ操作も利用できなくなっています。
[uozu@db ~]$ ping -c 3 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.195 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.241 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.248 ms
--- 192.168.1.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2067ms
rtt min/avg/max/mdev = 0.195/0.228/0.248/0.023 ms
[uozu@db ~]$ ping -c 3 8.8.8.8
ping: connect: Network is unreachable
[uozu@db ~]$ sudo dnf update
AlmaLinux 10 - AppStream 0.0 B/s | 0 B 00:00
Errors during downloading metadata for repository 'appstream':
- Curl error (6): Could not resolve hostname for https://mirrors.almalinux.org/mirrorlist/10/appstream [Could not resolve host: mirrors.almalinux.org]
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: Curl error (6): Could not resolve hostname for https://mirrors.almalinux.org/mirrorlist/10/appstream [Could not resolve host: mirrors.almalinux.org]
[uozu@db ~]$ curl google.com
curl: (6) Could not resolve host: google.comVPNルーターなどの追加でローカルIPとグローバルIPのNATも可能ですが、この構成を変えず、このサーバーから特定の作業のみ、踏み台サーバーを経由して、必要な通信だけ外部へ出せるようにしてみます。
踏み台サーバにSquidの導入と初期設定
踏み台サーバ側にSquidを導入し、ローカルIPの範囲(192.168.1.0/24)のみアクセス可能とします。
[uozu@web ~]$ sudo dnf install squid -y
Last metadata expiration check: 2:20:39 ago on Sun 16 Aug 2026 03:47:26 PM JST.
Dependencies resolved.
========================================================================================================================
Package Architecture Version Repository Size
========================================================================================================================
Installing:
squid x86_64 7:6.10-12.el10_2.1 appstream 3.5 M
Installing dependencies:
libecap x86_64 1.0.1-19.el10 appstream 26 k
perl-English noarch 1.11-512.2.el10_0 appstream 13 k
Transaction Summary
========================================================================================================================
Install 3 Packages
Total download size: 3.5 M
Installed size: 11 M
Downloading Packages:
~省略
Installed:
libecap-1.0.1-19.el10.x86_64 perl-English-1.11-512.2.el10_0.noarch squid-7:6.10-12.el10_2.1.x86_64
Complete!Squidを公開状態にすると、意図しない第三者にプロキシとして利用される可能性があります。実運用では、acl による接続元制限に加えて、パケットフィルターやOS側のファイアウォールでも、ローカルネットワークからの接続だけを許可するようにしてください。
また、acl localnet で許可する接続元ネットワークを指定し、http_access allow localnet でそのネットワークからのプロキシ利用を許可します。
[uozu@web ~]$ sudo less /etc/squid/squid.conf
--
# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
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
--
# http_access allow localnet
--
[uozu@web ~]$ sudo vi /etc/squid/squid.conf
--
# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
#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.1.0/24 # 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
--
http_access allow localhost
--
[uozu@web ~]$ sudo systemctl enable --now squid
[root@web ~]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 723/sshd: /usr/sbin
tcp6 0 0 :::3128 :::* LISTEN 5737/(squid-1)
tcp6 0 0 :::22 :::* LISTEN 723/sshd: /usr/sbin
tcp6 0 0 :::80 :::* LISTEN 744/httpd
tcp6 0 0 :::443 :::* LISTEN 744/httpdこれでローカルIPサーバーからProxyが利用できるようになります。
ローカルIPサーバー側からの利用方法と設定方法
curlなら -x で踏み台サーバとポートを指定してProxyが利用できます。
[uozu@db ~]$ curl google.com -x http://192.168.1.1:3128
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>もしcurlでProxyの利用を永続化したいなら、.curlrcの作成で設定できます。
[uozu@db ~]$ vi .curlrc
[uozu@db ~]$ cat .curlrc
proxy=http://192.168.1.1:3128
[uozu@db ~]$ curl google.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>dnfなら --setopt=proxy で指定が可能です。こちらも永続化したい際は、/etc/dnf/dnf.conf にproxyオプションで指定可能です。
[uozu@db ~]$ sudo dnf update --setopt=proxy=http://192.168.1.1:3128
determining the fastest mirror (10 hosts).. done. ] --- B/s | 0 B --:-- ETA
AlmaLinux 10 - AppStream 1.8 MB/s | 2.4 MB 00:01
AlmaLinux 10 - BaseOS 19 MB/s | 29 MB 00:01
AlmaLinux 10 - CRB 601 kB/s | 566 kB 00:00
AlmaLinux 10 - Extras 11 kB/s | 7.3 kB 00:00
determining the fastest mirror (39 hosts).. done. === ] --- B/s | 0 B --:-- ETA
Extra Packages for Enterprise Linux 10 - x86_64 1.9 MB/s | 6.6 MB 00:03
Dependencies resolved.
========================================================================================================================
Package Architecture Version Repository Size
========================================================================================================================
Installing:
kernel x86_64 6.12.0-211.47.1.el10_2 baseos 1.6 M
Upgrading:
NetworkManager x86_64 1:1.56.0-2.el10_2 baseos 2.2 M
NetworkManager-libnm x86_64 1:1.56.0-2.el10_2 baseos 1.9 M
NetworkManager-tui x86_64 1:1.56.0-2.el10_2 baseos 232 k
amd-gpu-firmware noarch 20260707-23.1.el10_2 appstream 29 M
amd-ucode-firmware noarch 20260707-23.1.el10_2 baseos 701 k
atheros-firmware noarch 20260707-23.1.el10_2 baseos 47 M
~省略[uozu@db ~]$ sudo vi /etc/dnf/dnf.conf
--
proxy=http://192.168.1.1:3128
--最後に
今回は、さくらのクラウドでローカルIPのみを持つサーバーから、踏み台サーバー上のSquidを経由して外部通信する方法を試してみました。
ローカルIPのみのサーバーでは、そのままでは外部IPへの通信や名前解決ができず、curl や dnf も利用できない場合があります。Squidを踏み台サーバー側に用意しておくことで、必要なコマンドだけプロキシ経由で外部へ通信させることができます。
ローカルIPのみのサーバーで、構成を大きく変えずに一時的なパッケージ取得や外部アクセスを行いたい場合は、Squidプロキシを活用してみてはいかがでしょうか。
最後までお読みいただき、ありがとうございます!