CentOS 7 (カーネル) を削除しfirewalld
てインストールしました。ルールセットは次のとおりです。nftables
3.10.0-1160.42.2.el7.x86_64
# nft list ruleset
table ip my_table {
set ssh_evils {
type ipv4_addr
}
set sip_evils {
type ipv4_addr
}
set dialers {
type ipv4_addr
}
set sip_origins {
type ipv4_addr
elements = { 27.a.b.c, 51.p.q.r,
139.x.y.z }
}
set port_fw {
type ipv4_addr
elements = { 27.a.b.c }
}
set iax_ports {
type inet_service
elements = { 4501 }
}
chain input {
type filter hook input priority 0; policy drop;
iif "lo" accept
tcp dport ssh ip saddr @ssh_evils counter packets 0 bytes 0 drop
udp dport sip ip saddr @sip_evils counter packets 0 bytes 0 drop
ct state vmap { invalid : drop, established : accept, related : accept, new : accept }
udp dport { 1100-1199, 10000-20000 } accept
udp dport @iax_ports accept
udp dport { sip } ip saddr @sip_origins accept
udp dport { sip } ip saddr @dialers accept
tcp dport { ssh, http, https } accept
icmp type echo-request limit rate 500/second accept
}
chain dummy1 {
type filter hook prerouting priority -100; policy accept;
}
chain dummy2 {
type filter hook forward priority 0; policy accept;
}
chain dummy3 {
type filter hook postrouting priority 100; policy accept;
}
chain port_forward {
type nat hook prerouting priority -10; policy accept;
tcp dport 40004 ip saddr @port_fw dnat to 192.168.101.4:http
tcp dport 40005 ip saddr @port_fw dnat to 192.168.101.5:http
tcp dport 40009 ip saddr @port_fw dnat to 192.168.101.9:http
tcp dport 50001 ip saddr @port_fw dnat to 10.1.1.2:http
}
chain sip_forward {
type nat hook prerouting priority -10; policy accept;
udp dport { 6060-6080 } redirect to :sip
}
chain tmp_forward {
type nat hook prerouting priority -10; policy accept;
}
chain masq {
type nat hook postrouting priority 10; policy accept;
masquerade
}
}
完全にアンインストールしたのでfirewalld
、ルールはありませんiptables
。
しかし、このnftable
構成では接続が許可されずloopback
、ping 127.0.0.1
タイムアウトが発生します。
その他の機能(http
ポートssh
転送など)は完璧に動作します。
これに対する解決策は見つかりませんでした。nft monitor
何も印刷されません。
答え1
分かりました!問題は無条件masquerading
ルールでした。
私は交換した
chain masq {
type nat hook postrouting priority 10; policy accept;
masquerade
}
と
chain masq {
type nat hook postrouting priority 10; policy accept;
oif != "lo" masquerade
}
そして問題は解決しました!