60

ラックスペースでCentOSサーバーを起動し、実行しましたyum install httpd'd。次にservices httpd start。だから、必要最低限​​のものだけです。

ssh(22)を介してリモートでIPアドレスにアクセスできるので、DNSなどは問題ありませんが(ブラウザなどを介して)ポート80に接続しようとすると接続拒否。

ただし、ローカルホストからは、telnet(80)を使用することも、それ自体でlynxを使用することもでき、問題なくサービスを提供できます。外部(私の家、私の学校、地元のコーヒーショップなど)から、telnetは22で接続しますが、80では接続しません。

私はnetstat -tulpn(<-嘘をつくつもりはない、その-tulpn部分は理解できないが、それはインターネットが私にそうするように言ったことだ...)そして見る

tcp    0    0 :::80     :::*    LISTEN    -                   

私が信じているように。とhttpd.conf言いListen 80ます。

私はservices httpd restart何度もやりました。

正直なところ、どうしたらいいのかわかりません。ラックスペースが着信ポート80リクエストにファイアウォールを設定する方法はありません。愚かなことを見逃しているような気がしますが、ベアボーンサー​​バーを2回起動し、いじくり回して物事を台無しにしたと思って、この機能を実現するために最小限のことをしましたが、どちらも機能しませんでした。

どんな助けでも大歓迎です!(そして、長く曲がりくねったポストをお詫びします...)

編集 私はの出力を投稿するように頼まれましたiptables -L。だからここにあります:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
ACCEPT     icmp --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh 
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination   
4

11 に答える 11

111

まだ解決されていない場合。あなたのiptablesは言う:

状態RELATED、ESTABLISHED

つまり、すでに確立されている接続のみを通過させることができます...これは、リモートマシンではなく、ユーザーによって確立されます。次に、次のルールでこれに対する例外を確認できます。

state NEW tcp dpt:ssh

これはsshにのみカウントされるため、httpにも同様のルール/行を追加する必要があります。これは次のように実行できます。

state NEW tcp dpt:80

あなたはこのように行うことができます:

sudo iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

(この場合、4行目に新しいルールを追加することを選択しています)

ファイルを編集した後、次のように保存する必要があることに注意してください。

sudo /etc/init.d/iptables save
于 2013-10-24T14:50:40.827 に答える
28

CentOS 7は、デフォルトでfirewalldを使用するようになりました。しかし、すべての答えはiptablesに焦点を当てています。そこで、firewalldに関連する回答を追加したいと思いました。

Firewalldはiptablesの「ラッパー」であるため、antonio-fornieの回答を使用しても機能するようですが、その新しいルールを「保存」することはできませんでした。そのため、ファイアウォールが再起動するとすぐにApacheサーバーに接続できませんでした。幸いなことに、firewalldコマンドで同等の変更を加える方が実際にははるかに簡単です。まず、firewalldが実行されているかどうかを確認します。

firewall-cmd --state

実行中の場合、応答は単に「実行中」という1行になります。

パブリックゾーンで一時的にhttp(ポート80)接続を許可するには:

sudo firewall-cmd --zone=public --add-service=http

上記は「保存」されません。次にfirewalldサービスが再起動されると、デフォルトのルールに戻ります。先に進む前に、この一時的なルールを使用して、接続の問題が解決されることをテストおよび確認する必要があります。

パブリックゾーンでhttp接続を永続的に許可するには:

sudo firewall-cmd --zone=public --permanent --add-service=http

「temporary」コマンドも実行せずに「permanent」コマンドを実行する場合は、firewalldを再起動して、新しいデフォルトのルールを取得する必要があります(これはCentOS以外のシステムでは異なる場合があります)。

 sudo systemctl restart firewalld.service

これで接続の問題が解決しない場合は、インターフェースが「パブリックゾーン」にないことが原因である可能性があります。次のリンクは、firewalldについて学ぶための優れたリソースです。ゾーンの確認、割り当て、構成の方法について詳しく説明します:https ://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7

于 2016-12-13T02:34:27.007 に答える
6

SELinuxは、Apache(したがってすべてのApacheモジュール)がデフォルトでリモート接続を確立するのを防ぎます。

# setsebool -P httpd_can_network_connect=1
于 2012-11-26T05:26:27.607 に答える
3

iptables.configテーブルで以下の設定を試してください

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

以下のコマンドを実行して、iptableサービスを再起動します

service iptables restart

httpd.configファイルを次のように変更します

Listen 192.170.2.1:80

apacheを再起動します。

今すぐやってみて下さい。

于 2012-08-15T21:33:18.937 に答える
2

RHEL / CentOS 7を使用している場合(OPは使用していませんが、私の場合はソリューションを共有すると思いました)、他の回答に記載されているiptablesサービスの代わりにfirewalldを使用する必要があります。

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload

次に、次のコマンドで実行されていることを確認します。

firewall-cmd --permanent --zone=public --list-all

80/tcp下にリストする必要がありますports

于 2016-06-21T03:50:30.937 に答える
1

apache構成ファイル(httpd.conf、apache2.conf、listen.conf、...)でLISTENディレクティブを検索し、localhostまたは127.0.0.1が表示されている場合は、パブリックIPで上書きする必要があります。

于 2012-05-23T23:31:33.163 に答える
1

iptablesを無効にしてみてください:service iptables stop

これが機能する場合は、ファイアウォールルールに対してTCPポート80を有効にします。ルートからsystem-config-selinuxを実行し、ファイアウォールでTCPポート80(HTTP)を有効にします。

于 2012-05-23T23:38:54.380 に答える
1

これは機能します:-REDHATの場合:cat "/ etc / sysconfig / iptables"

iptables -I  RH-Firewall-1-INPUT -s 192.168.1.3  -p tcp -m tcp --dport 80 -j ACCEPT

に続く

sudo /etc/init.d/iptables save
于 2014-03-09T20:37:01.037 に答える
1

これが、外部からApacheにアクセスできるようにするために機能したものです。

sudo iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
sudo service iptables restart
于 2016-03-23T01:55:58.243 に答える
0

特定のインターフェースにリストするようにapacheを設定し、以下のように移植します。

Listen 192.170.2.1:80

また、ホスト上でそのポートにアクセスしている外部ホストと干渉している可能性のあるIptablesおよびTCPWrappersエントリを確認します。

Apacheのドキュメントのバインド

于 2012-05-23T23:34:07.580 に答える
-1

SELinuxを無効にする

$ sudo setenforce 0
于 2012-09-17T15:24:30.430 に答える