📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
| 208行目: | 208行目: | ||
ただし、トラフィックをサーバ経由で正しくルーティングする前に、いくつかのファイアウォールルールを設定する必要がある。<br> | ただし、トラフィックをサーバ経由で正しくルーティングする前に、いくつかのファイアウォールルールを設定する必要がある。<br> | ||
このルールにより、WireGuardサーバとピアとの間のトラフィックが正しく流れるようになる。<br> | このルールにより、WireGuardサーバとピアとの間のトラフィックが正しく流れるようになる。<br> | ||
<br><br> | |||
==== 構築 ステップ5 : WireGuardサーバのファイアウォールの設定 ==== | |||
このセクションでは、WireGuardサーバとクライアント間のトラフィックが正しくルーティングされるようにするため、ファイアウォールルールを追加する。<br> | |||
もし、WireGuard VPNをマシン間接続にのみ使用して、VPNに制限されているリソースにアクセスする場合は、この設定は不要である。<br> | |||
<br> | |||
WireGuard VPNトラフィックをサーバのファイアウォール経由で許可する場合は、マスカレードを有効にする必要がある。<br> | |||
マスカレードとは、クライアント接続を正しくルーティングするためにオンザフライで動的なネットワークアドレス変換(NAT)を行うiptablesの概念である。<br> | |||
<br> | |||
まず、WireGuardサーバのパブリックネットワークインターフェースを探す。<br> | |||
<br> | |||
パブリックインターフェースは、このコマンド出力の"dev"の後に続く文字列である。<br> | |||
以下の例では、eth0というインターフェイスが表示される。<br> | |||
ip route list default | |||
# 出力例 | |||
default via 203.0.113.1 dev eth0 proto static | |||
<br> | |||
ファイアウォールルールをWireGuardサーバに追加するため、/etc/wireguard/wg0.confファイルの最下行に、以下に示す設定を追記する。<br> | |||
sudo vi /etc/wireguard/wg0.conf | |||
# /etc/wireguard/wg0.confファイル | |||
# ...略 | |||
PostUp = ufw route allow in on wg0 out on eth0 | |||
PostUp = iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE | |||
PostUp = ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE | |||
PreDown = ufw route delete allow in on wg0 out on eth0 | |||
PreDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE | |||
PreDown = ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE | |||
<br> | |||
PostUpの行は、WireGuardサーバが仮想VPNトンネルを開始するときに実行される。<br> | |||
上記の例では、3つのufwルールとiptablesルールが追加される。<br> | |||
<br> | |||
* <code>ufw route allow in on wg0 out on eth0</code> | |||
*: このルールは、wg0 VPNインターフェースから入ってくるIPv4とIPv6のトラフィックをサーバのeth0ネットワークインターフェースに転送することを許可する。 | |||
*: 前のセクションで設定した<code>net.ipv4.ip_forward</code>と<code>net.ipv6.conf.all.forwarding sysctl</code>の値と連動する。 | |||
*: <br> | |||
* <code>iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE</code> | |||
*: このルールは、マスカレードを設定して、wg0 VPNインターフェースに入力されるIPv4トラフィックを書き換えて、WireGuardサーバのパブリックIPv4アドレスから直接発信されているように見せかける。 | |||
*: <br> | |||
* <code>ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE</code> | |||
*: このルールは、マスカレードを設定して、wg0 VPNインタフェースから侵入してくるIPv6トラフィックを書き換えて、WireGuardサーバのパブリックIPv6アドレスから直接発信されているように見せかける。 | |||
<br> | |||
PreDownルールは、WireGuardサーバが仮想VPNトンネルを停止するときに実行される。<br> | |||
これらのルールは、PostUpルールの逆で、VPNが停止された時にVPNインターフェイスの転送ルールとマスカレードルールを元に戻す働きをする。<br> | |||
<br> | |||
どちらの場合も、VPNに適したIPv4ルールとIPv6ルールを含むか含まないか、設定を編集する。<br> | |||
例えば、IPv4のみを使用しているのであれば、ip6tablesコマンドで行を除外することができる。<br> | |||
逆に IPv6のみを使うのであれば、ip6tablesコマンドだけを含むように設定を編集する。<br> | |||
<br> | |||
ufwの行は、IPv4とIPv6のネットワークの組み合わせに関係なく存在する必要がある。<br> | |||
<br> | |||
WireGuardサーバのファイアウォール設定の最後は、WireGuard UDPポート自体とのトラフィックを許可することである。<br> | |||
WireGuardサーバの/etc/wireguard/wg0.confファイルでポートを変更しなかった場合、開くポートは51820である。<br> | |||
もし、別のポートを使用する場合は、必ずufwコマンドを実行して、該当ポートを置き換えること。<br> | |||
<br> | |||
また、SSHポートを開放すること。<br> | |||
sudo ufw allow 51820/udp | |||
sudo ufw allow OpenSSH | |||
<br> | |||
<u>※注意</u><br> | |||
<u>別のファイアウォールを使用している場合、または、UFWの設定をカスタマイズしている場合は、追加のファイアウォールルールを追加する必要がある場合がある。</u><br> | |||
<u>例えば、ネットワークトラフィックの全てをVPN接続でトンネリングする場合、DNSリクエストにはポート53、HTTPとHTTPSトラフィックにはそれぞれ80と443のようなポートを許可する必要がある。</u><br> | |||
<u>また、VPN経由で使用する他のプロトコルがある場合は、それらのルールも追加する必要がある。</u><br> | |||
<br><br> | <br><br> | ||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]][[カテゴリ:Windows10]] | [[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]][[カテゴリ:Windows10]] | ||