web-dev-qa-db-ja.com

CentOS-IPTables-サブネットのフルアクセス上のノードを許可

私はlinode.comを使用していますが、それらは各vpsにプライベートIPを割り当てる機能を提供します。私がやろうとしていることは、ネットワーク上の他のノードからのアクセスを許可するように各ノードのファイアウォールを設定することですが、あまり成功していないようです。

たとえば、server2からserver1:1337へのアクセスを許可しようとしています。どちらも次のように設定されています。

server1:
   ifcfg-eth0:
     DEVICE="eth0"
     IPADDR="1.1.1.1"
     NETMASK="255.255.255.0"

   ifcfg-eth0:0:
     DEVICE="eth0:0"
     IPADDR="192.168.132.96"
     NETMASK="255.255.128.0"

server2:
   ifcfg-eth0:
     DEVICE="eth0"
     IPADDR="1.1.1.2"
     NETMASK="255.255.255.0"

   ifcfg-eth0:0:
     DEVICE="eth0:0"
     IPADDR="192.168.132.97"
     NETMASK="255.255.128.0"

そして、server1のIPTablesルールセット:

#-----
# Flush all current rules from iptables#
#-----
iptables -F
iptables -F -t nat
#-----

#-----
# Set access for localhost
#-----
iptables -A INPUT -i lo -j ACCEPT

# !! Tried to allow all nodes on the subnet access to everything, but still didn't work !!
iptables -A INPUT -s 192.168.132.0/17 -j ACCEPT
#-----

#-----
# Accept packets belonging to established and related connections
#-----
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#-----

# !! Tried to allow access to the port directly !!
iptables -A INPUT -i eth0:0 -p tcp -s 192.168.132.0/17 --dport 1337 -j ACCEPT 

#-----
# Lock everything down
#-----
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
#-----

仮想設定が親設定を共有しているため、iptablesが-i eth0:0呼び出しを使用できないと述べたいくつかの古いフォーラムを偶然見つけましたが、これを完全に確認することはできませんでした。

-編集-

また、プライベートサブネット(192.168.132.0/17)をserver2に追加しましたが、接続できません。

2
Mike Purcell

コメントからの提案とlinodeテクニカルサポートからの情報のおかげで、接続の問題を解決することができました。

この問題を解決するには、server1とserver2の両方に、iptablesの適切なプライベートサブネットエントリがあることを確認する必要がありました。

iptables -A INPUT -s 192.168.132.0/17 -j ACCEPT

両方のサーバーでこのエントリを作成した後、(server1から)server2:1337にtelnetで接続し、iptablesを介してバイト/パケットを監視し、実際にパケットが受け入れられていることを確認します。

$ -> telnet 192.168.132.97 1337
Trying 192.168.132.97...
Connected to 192.168.132.97.
Escape character is '^]'.

$ -> iptables -L -vn
Chain INPUT (policy DROP 337 packets, 18695 bytes)
pkts bytes target     prot opt in     out     source               destination
56 30019 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
53 40539 ACCEPT     all  --  *      *       192.168.128.0/17     0.0.0.0/0

今問題は、ロードバランサーとしてnginxを使用しており、server2 dnsエントリを使用していたことです。これは、デフォルトでパブリックIPであると想定しています。これは、iptablesルールセットの一部ではありません。プライベートネットワーク上のすべての単一IPでポート1337へのアクセスを許可します。ただし、OPが解決されたため、この問題は別の質問です。

-更新-

他の誰かが将来この問題に遭遇した場合に備えて、この回答を更新します。私はこのソリューションを選択しました。 DNSステルス 。私のVPSの1つにDNS機能を追加することで、すべての内部IPと外部IPを追加できるため、内部IPテーブルのすべての構成が期待どおりに機能し、パブリックIPを介して任意のVPSにリモートアクセスできます。

4
Mike Purcell