
1 つの WAN インターフェイス (ens18) と複数の LAN インターフェイス ens19:ens23 および ens1 を備えたルーターとして、Ubuntu サーバー 22.04 (仮想化) を設定しようとしています。
私が達成しようとしていることは次のとおりです:
- ens19:ens21 にインターネットへのアクセスを許可する
- ens23 にインターネットへのアクセスを許可する
- ens22 にインターネットへのアクセスを許可しますが、平日の勤務時間中のみ許可します。
- ens1 のインターネットへのアクセスを拒否します。
- ens1 から ens19 へのアクセスを含むすべての LAN インターフェイスを許可する
- ens19へのアクセス以外のLAN間のアクセスをブロックする
私が直面している問題は次のとおりです。何らかの理由で、デフォルトの転送ルールを DROP に設定すると、クライアント ネットワークはインターネットにまったくアクセスできず、ens19 にもアクセスできません。デフォルトの転送ルールを accept に設定してみたところ、すべてのネットワークからインターネットに完全にアクセスできるようになりました。
フォワード チェーンでいくつかのルールが欠落しているか、間違ったルールを使用しているようです。建設的なご意見をいただければ幸いです。
iptables の設定に使用したコマンドは次のとおりです。
#flush existing config
sudo iptables -F
sudo iptables -X
#temporary rules for configuration purposes
sudo iptables -A INPUT -i ens18 -p tcp --dport 22 -j ACCEPT
sudo iptables -A FORWARD -i ens18 -o ens19 -p tcp --dport 3306 -j ACCEPT
sudo iptables -A FORWARD -i ens18 -o ens19 -p tcp --dport 33060 -j ACCEPT
sudo iptables -A FORWARD -i ens18 -o ens19 -p tcp --dport 80 -j ACCEPT
##set default policies
sudo iptables -P OUTPUT ACCEPT
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
#allow loopback
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT
#allowe established and related incoming traffic
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
#Allow access to WAN
sudo iptables -A FORWARD -i ens19 -o ens18 -j ACCEPT
sudo iptables -A FORWARD -i ens20:ens21 -o ens18 -j ACCEPT
sudo iptables -A FORWARD -i ens22 -o ens18 -m time --timestart $(date -u -d @$(date "+%s" -d "07:00") +%H:%M) --timestop $(date -u -d @$(date "+%s" -d "20:00") +%H:%M) --weekdays Mon,Tue,Wed,Thu,Fri -j ACCEPT
sudo iptables -A FORWARD -i ens23 -o ens18 -j ACCEPT
#Allow Access from LAN to DMZ
sudo iptables -A FORWARD -i ens20:ens23 -o ens19 -j ACCEPT
sudo iptables -A FORWARD -i ens1 -o ens19 -j ACCEPT
#deny access to WAN from the lan connected to ens1
sudo iptables -A FORWARD -i ens1 -o ens18 -j DROP
#deny communication between interfaces ens20:ens23, ens1
sudo iptables -A FORWARD -i ens20 -o ens21 -j DROP
sudo iptables -A FORWARD -i ens20 -o ens22 -j DROP
sudo iptables -A FORWARD -i ens20 -o ens23 -j DROP
sudo iptables -A FORWARD -i ens21 -o ens20 -j DROP
sudo iptables -A FORWARD -i ens21 -o ens22 -j DROP
sudo iptables -A FORWARD -i ens21 -o ens23 -j DROP
sudo iptables -A FORWARD -i ens22 -o ens20 -j DROP
sudo iptables -A FORWARD -i ens22 -o ens21 -j DROP
sudo iptables -A FORWARD -i ens22 -o ens23 -j DROP
sudo iptables -A FORWARD -i ens23 -o ens20 -j DROP
sudo iptables -A FORWARD -i ens23 -o ens21 -j DROP
sudo iptables -A FORWARD -i ens23 -o ens22 -j DROP
sudo iptables -A FORWARD -i ens1 -o ens20 -j DROP
sudo iptables -A FORWARD -i ens1 -o ens21 -j DROP
sudo iptables -A FORWARD -i ens1 -o ens22 -j DROP
sudo iptables -A FORWARD -i ens1 -o ens23 -j DROP
#enable masquerading on port ens18
sudo iptables -t nat -A POSTROUTING -o ens18 -j MASQUERADE
##save and reload
sudo netfilter-persistent save
sudo netfilter-persistent reload
iptables -nvL の出力は次のとおりです。
henrik@server0router:~$ sudo iptables -nvL
Chain INPUT (policy DROP 3 packets, 939 bytes)
pkts bytes target prot opt in out source destination
104 7488 ACCEPT tcp -- ens18 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
Chain FORWARD (policy DROP 58 packets, 4640 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- ens18 ens19 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306
0 0 ACCEPT tcp -- ens18 ens19 0.0.0.0/0 0.0.0.0/0 tcp dpt:33060
0 0 ACCEPT tcp -- ens18 ens19 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
0 0 ACCEPT all -- ens19 ens18 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- ens20:ens21 ens18 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- ens22 ens18 0.0.0.0/0 0.0.0.0/0 TIME from 05:00:00 to 18:00:00 on Mon,Tue,Wed,Thu,Fri UTC
0 0 ACCEPT all -- ens23 ens18 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- ens20:ens23 ens19 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- ens1 ens19 0.0.0.0/0 0.0.0.0/0
6 450 DROP all -- ens1 ens18 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- ens20 ens21 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- ens20 ens22 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- ens20 ens23 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- ens21 ens20 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- ens21 ens22 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- ens21 ens23 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- ens22 ens20 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- ens22 ens21 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- ens22 ens23 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- ens23 ens20 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- ens23 ens21 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- ens23 ens22 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- ens1 ens20 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- ens1 ens21 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- ens1 ens22 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- ens1 ens23 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT 3 packets, 984 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0
54 5744 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate ESTABLISHED
henrik@server0router:~$ ^C
答え1
はい、解決策を見つけたと思います。
明確に言うと、私のセットアップは、Proxmox VE 上で Qemu/KVM として実行される Ubuntu サーバー数台と、さまざまなネットワーク クライアントをエミュレートするためのデスクトップ VM 数台です。
これらのマシンは、proxmox で設定されたネットワーク ブリッジを使用して、各クライアントと「server1」を「server0router」に接続します。ここでの問題は、proxmox で VM にネットワーク インターフェイスが追加されると、ハイパーバイザーのファイアウォール機能がデフォルトで有効になり、Web インターフェイスで VM のファイアウォール ルールを作成できるようになることです。
proxmox の server0router vm のネットワーク インターフェイスで「ファイアウォール」チェックボックスをオフにすると、すべてが VM 内で設定されたルールで指定されたとおりに動作するようになります。
編集: コマンドを入力してもエラーは表示されなかったものの、範囲が機能していないようだったため、ens20:ens23 を使用する代わりに、ポートごとに個別のルールに切り替える必要がありました。