すべてのHTTP/HTTPSトラフィックを1つのサーバーから別のサーバーに(IP経由で)リダイレクトしようとしています。
私はufw
ファイアウォールを使用しています。どうすれば設定できますか?
(これには管理者権限が必要なので、rootとしてログインするか、それに応じてSudoを使用します)
簡単な解決策の1つは、iptables
を使用することです。
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -m conntrack --ctstate NEW -j DNAT --to foo_serverip:80
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -m conntrack --ctstate NEW -j DNAT --to foo_serverip:443
iptables -t nat -A PREROUTING -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A POSTROUTING -t nat -j MASQUERADE
ポート80および443(オプション:--dport 80、443)で受信したインターフェースeth0
(オプション:-i)のすべてのトラフィックを、ポート80または443のfoo_serverip
IPアドレスにリダイレクトします。
テストした後は、現在のiptablesルールを
iptables-save > /etc/iptables.rules
とそれらを復元します
iptables-restore < /etc/iptables.rules
これを知って、起動時にルールを復元するオプションは複数あります。私が考えることができる最も単純なものは、/etc/rc.local
を編集して、行に/sbin/iptables-restore < /etc/iptables.rules
を追加することです。
ufw
がこれだけでできることはないと思います。
fwを構成して、ポートを外部IPに転送することができます。
編集/etc/default/ufw
転送要求を受け入れる
default_forward_policy = "accept"
/etc/ufw/sysctl.confを編集して転送を許可する
net.ipv4.ip_forward=1
編集/etc/ufw/before.rules
、最初のコメントの後に以下を追加します
*nat
:PREROUTING ACCEPT [0:0]
-A PREROUTING -p tcp --dport 80 -j DNAT --to-destination external_ip:80
COMMIT