ホスト A で TCP サーバーを起動し、別のホスト B で TCP クライアントを起動しました。
両方のホストは、自宅のワイヤレス ルーターを介して同じ LAN にあります。TCP クライアントはポート 8000 で TCP サーバーに接続しようとしますが、「ホストへのルートがありません」という理由で失敗します。
クライアントホストからサーバーホストにpingを正常に実行でき、実際にはクライアントからサーバーにsshで接続しています。
2つのホストを入れ替えると、つまりホストBでTCPサーバーを起動し、次にホストAでTCPクライアントを起動すると、TCP接続は成功します。
サーバーホストAに何が問題なのでしょうか?次のリンクには、iptables -L -n、ss -tlnp、netstat -lnpの結果が表示されています。
http://paste.ubuntu.com/12785409/
A のルーティング テーブル:
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 wlan0
192.168.0.0 0.0.0.0 255.255.255.0 U 9 0 0 wlan0
B のルーティング テーブル:
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 wlan0
192.168.0.0 0.0.0.0 255.255.255.0 U 9 0 0 wlan0
関連する TCP クライアントとサーバーは次のとおりです。 https://www.cs.cmu.edu/afs/cs/academic/class/15213-f99/www/class26/tcpserver.c
http://www.cs.cmu.edu/afs/cs/academic/class/15213-f99/www/class26/tcpclient.c
私は試した
VPNエージェントプロセスを強制終了する
# ps ax | grep vpnagent
1291 ? S 0:00 /opt/cisco/vpn/bin/vpnagentd
4202 pts/2 S+ 0:00 grep --color=auto vpnagent
#sudo kill -9 1291
その後
# service vpnagentd stop
# sudo systemctl stop vpnagentd
これが原因かどうかは分かりませんが、先日、突然接続が正常になりました。しかし、再起動後、上記のコマンドを実行してvpnagentサービスを停止しても、「ホストへのルートがありません」という問題は依然として残っています。
答え1
Fedoraはポートのブロック/許可にfirewalldサービスを使用しています
アクティブなゾーンを見つけるには、次のコマンドを使用します。
firewall-cmd --get-active-zones
public、dmz、またはその他の名前が表示されます。必要なゾーンにのみ適用してください。
公開の場合は、次の操作を試してください。
firewall-cmd --zone=public --add-port=8000/tcp
永続的にしたい場合は、以下を試してください。
firewall-cmd --zone=public --add-port=8000/tcp --permanent
それ以外の場合は、ゾーンを dmz に置き換えます。たとえば、ゾーンがパブリックの場合は次のようになります。
firewall-cmd --zone=public --add-port=2888/tcp --permanent
変更を有効にするには、必ずファイアウォールを再ロードしてください。
firewall-cmd --reload