这就是我如何使用UFW设置我的iptables:
sudo ufw default deny incoming (拒绝所有传入) sudo ufw default deny outgoing (拒绝所有传出) sudo ufw allow out 53 (接受传出的DNSstream量 ,包括tcp和udp) sudo ufw allow in 80/tcp (接受来自端口80的所有传入的tcp) sudo ufw allow out 80/tcp (接受所有的输出tcp到端口80) sudo ufw allow proto tcp from <admin_ip_addr> to <server_ip_addr> port 22 (从pipe理员办公室的IP为ssh接受传入的TCP端口22) sudo ufw allow out 9418/tcp (接受传出的git连接) sudo ufw allow proto tcp from <server_ip_addr> to any port 22 (接受传出ssh连接与GitHub连接) 英文:阻止所有,除了HTTP,DNS,来自pipe理IP的传入SSH,传出的GIT和传出的SSH。
不幸的是,当我然后做git clone [email protected]:username/project.git它卡在Initialized empty Git repository in /home/adminuser/exper/project/.git/ git clone [email protected]:username/project.git
当我然后启用sudo ufw default allow outgoing所有传出stream量,并重复git克隆命令,它确实工作。
所以,显然有一些传出仍然被阻止。
任何人都可以告诉我这可能是什么,我应该添加什么规则来允许它?
我也尝试了以下规则,没有成功:
sudo ufw allow out 1024:65535/udp 你正在尝试连接SSH,并且(似乎是)允许的,所以现在是时候来诊断问题了。 我喜欢在丢弃任何数据包之前添加一条LOG规则,所以我确切地知道丢弃了什么。 否则,一些tcpdump动作应该识别不在任何地方的stream量。 一旦你知道什么被放弃,添加必要的规则来允许它是一件微不足道的事情。
经过了很长的一段时间,我把自己从2台服务器中解放出来。 下面的防火墙规则为我做了一个'git克隆'。 希望它也能帮助你。
仅供参考:我正在我的服务器的专用接口“eth0”上运行下面的命令。 我从这里得到了github子网IP: https : //help.github.com/articles/github-s-ip-addresses/
sudo ufw reset sudo ufw status verbose sudo ufw default deny incoming sudo ufw default deny outgoing # For resolving DNS problem sudo ufw allow out on eth0 to any port 53 # For allowing access to github.com sudo ufw allow out on eth0 to 192.30.252.0/22 port 22 sudo ufw --force enable