ファイアウォールを構成しようとしています。ネットワークインターフェイス、eth0(lan)およびeth1(wan)が必要です。
allow-hotplug eth1
auto eth1
iface eth1 inet static
address 192.168.2.2
gateway 192.168.2.1
netmask 255.255.255.0
allow-hotplug eth0
auto eth0
iface eth0 inet static
address 192.168.16.6
netmask 255.255.255.0
network 192.168.16.0
broadcast 192.168.0.255
Eth1の背後には、動的IPを提供するルーターがあります。
私は同じマシンで、Webプロキシがあります。実際、LAN上のコンピューターは、プロキシを使用してのみWebにアクセスできます。今、私はインターネット経由でSMTPおよびPOP3サーバーにアクセスするためにLAN内のマシンが必要です。したがって、NATが必要ですが、ポート25と110だけです。他のポートをNATしたくありません。
Iptablesを段階的に設定するのを手伝ってもらえますか(iptablesでは本当にnoobです)?
よろしく
以下のコードがその仕事をします。 Iptablesは簡単に操作できます。特定のポートの特定の場所から出入りするトラフィックをどう処理するかを明示する必要があります。ポート25と110のみを要求しましたが、セキュアSMTPとセキュアPOP3のオプションも含めました。
以下で私がお勧めするのは、設定しているファイアウォールルールを考慮に入れ、要求したルールを他の何よりも処理順序の上位に配置することです。 Iptablesはルールを一致する順序で処理するため、SMTPまたはPOP3をブロックする可能性のある他のルールがファイアウォールに既に存在する場合に備えて、挿入コマンドを使用し、ルールをリストの一番上に配置するように指定しました。他にファイアウォールルールがない場合は、「-I」を「-A」に置き換えて、「FORWARD」テーブルと「POSTROUTING」テーブルの後に行番号を削除できます。
可能な限り接続追跡を実装することをお勧めします。以下の最初のiptablesルールがそれをオンにします。本当に古いカーネルで実行している場合は、これらのコマンドで問題が発生する可能性がありますが、それらが機能する場合は問題ありません。そうでない場合は、その最初の行を削除し、他のすべての行の「-mtcp」部分を削除します。
#Enable IP Forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
#Turn on connection tracking
iptables -I FORWARD 1 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
#Allow SMTP traffic out to the internet. This includes regular and authenticated SMTP
iptables -I FORWARD 2 -i eth1 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -I FORWARD 2 -i eth1 -p tcp -m tcp --dport 465 -j ACCEPT
iptables -I FORWARD 3 -i eth1 -p tcp -m tcp --dport 587 -j ACCEPT
#Allow POP3 traffic out to the internet. This includes regular and SSL secured POP3
iptables -I FORWARD 4 -i eth1 -p tcp -m tcp --dport 110 -j ACCEPT
iptables -I FORWARD 5 -i eth1 -p tcp -m tcp --dport 995 -j ACCEPT
#NAT the traffic leaving your router for the allowed forwarded ports above
iptables -t nat -I POSTROUTING 1 -o eth0 -p tcp --dport 25 -j MASQUERADE
iptables -t nat -I POSTROUTING 2 -o eth0 -p tcp --dport 465 -j MASQUERADE
iptables -t nat -I POSTROUTING 3 -o eth0 -p tcp --dport 587 -j MASQUERADE
iptables -t nat -I POSTROUTING 4 -o eth0 -p tcp --dport 110 -j MASQUERADE
iptables -t nat -I POSTROUTING 5 -o eth0 -p tcp --dport 995 -j MASQUERADE
#Optionally, block any other forwarded traffic
iptables -I FORWARD 6 -i eth1 -j REJECT
簡単なピーシーレモンスクイーズ:
iptables -t nat -A POSTROUTING -p TCP --dport 25 -j MASQUERADE
iptables -t nat -A POSTROUTING -p TCP --dport 110 -j MASQUERADE
:)
まず最初に:
allow-hotplug eth0
auto eth0
iface eth0 inet static
address 192.168.16.6
netmask 255.255.255.0
network 192.168.16.0
broadcast 192.168.0.255
間違っています(またはタイプミス;))。 broadcast
は192.168.16.255
である必要があります。
すべてのコンピューターがデフォルトゲートウェイとしてこのLinuxボックス(192.168.16.6
)を持っていると仮定すると、IP転送を構成するだけです。
# Enable ip forward:
echo 1 > /proc/sys/net/ipv4/ip_forward
# The same cam be achieved by:
# sysctl -w net.ipv4.ip_forward=1
# Forwarding traffic between interfaces:
iptables -A FORWARD -i eth0 -o eth1 --src 192.168.16.0/24 -p tcp --dport 25 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 --src 192.168.16.0/24 -p tcp --dport 110 -j ACCEPT
# This rule prevents other traffic to be dropped
iptables -A FORWARD -i eth0 -o eth1 --src 192.168.16.0/24 -j DROP
# Masquerade traffic to the outside world:
# If the public ip is a dynamic one use MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 --src 192.168.16.0/24 -j MASQUERADE
# If the public ip is a static one, use SNAT
iptables -t nat -A POSTROUTING -o eth1 --src 192.168.16.0/24 -j SNAT --to-source <pub_ip>
パブリック接続が確立されたときにpppリンクが作成された場合は、eth1
をppp0
に置き換える必要があります。
[〜#〜]注意[〜#〜]:これは決して強力なファイアウォールではなく、必要なことを実行するための最小限のルールセットにすぎません。