iptables 配置INPUT policy DROP git pull 失败

2023-03-14 17:37:52 浏览数 (3)

今天,vps发现修改了INPUT的默认policy后,git pull无法使用。

代码语言:javascript复制
iptables -P INPUT DROP

git pull
# 失败,报
ssh: Could not resolve hostname github.com: Temporary failure in name resolution
fatal: Could not read from remote repository.

现象是长时间阻塞。

添加日志

代码语言:javascript复制
iptables -A INPUT -m limit --limit 40/min -j LOG --log-prefix "Iptables" --log-level 7

注意,这条要用-A的方式添加在最下面,使得上面放通的规则被匹配。

此时可以在

代码语言:javascript复制
/var/log/syslog
/var/log/message

中找到iptables的日志。

定位问题

发现日志如下:

代码语言:javascript复制
Feb  1 16:52:44 localhost kernel: [26544901.701341] IptablesIN=eth0 OUT= MAC=aa:aa:00:12:15:13:30:7c:5e:84:9a:01:08:00 SRC=1.1.1.1 DST=104.243.28.195 LEN=72 TOS=0x00 PREC=0x00 TTL=59 ID=58349 DF PROTO=UDP SPT=53 DPT=47599 LEN=52 
Feb  1 16:52:44 localhost kernel: [26544901.701442] IptablesIN=eth0 OUT= MAC=aa:aa:00:12:15:13:30:7c:5e:84:9a:01:08:00 SRC=1.1.1.1 DST=104.243.28.195 LEN=140 TOS=0x00 PREC=0x00 TTL=59 ID=58350 DF PROTO=UDP SPT=53 DPT=47599 LEN=120 
Feb  1 16:52:49 localhost kernel: [26544906.706491] IptablesIN=eth0 OUT= MAC=aa:aa:00:12:15:13:30:7c:5e:84:9a:01:08:00 SRC=1.0.0.1 DST=104.243.28.195 LEN=72 TOS=0x00 PREC=0x00 TTL=59 ID=61408 DF PROTO=UDP SPT=53 DPT=57553 LEN=52 
Feb  1 16:52:49 localhost kernel: [26544906.706638] IptablesIN=eth0 OUT= MAC=aa:aa:00:12:15:13:30:7c:5e:84:9a:01:08:00 SRC=1.0.0.1 DST=104.243.28.195 LEN=140 TOS=0x00 PREC=0x00 TTL=59 ID=61409 DF PROTO=UDP SPT=53 DPT=57553 LEN=120 

代码语言:javascript复制
Feb  1 16:56:27 localhost kernel: [26545124.797668] IptablesIN=eth0 OUT= MAC=aa:aa:00:12:15:13:30:7c:5e:84:9a:01:08:00 SRC=192.30.255.113 DST=104.243.28.195 LEN=60 TOS=0x00 PREC=0x00 TTL=55 ID=0 DF PROTO=TCP SPT=22 DPT=51254 WINDOW=65535 RES=0x00 ACK SYN URGP=0 

添加规则如下:

代码语言:javascript复制
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --sport 22 -j ACCEPT
iptables -A INPUT -p udp --sport 22 -j ACCEPT
iptables -A INPUT -s 1.1.1.1 -j ACCEPT
iptables -A INPUT -s 1.0.0.1 -j ACCEPT

如果还不行,添加下面规则

代码语言:javascript复制
iptables -A INPUT -p tcp -m multiport --dports 22,80,443,3000,9418 -m state --state NEW,ESTABLISHED -j ACCEPT 
iptables -A OUTPUT -p tcp -m multiport --sports 22,80,443,3000,9418 -m state --state ESTABLISHED -j ACCEPT

不太理解,为什么git pull git服务器会以22端口向我发入包。不过这么操作后,git pull问题解决。

1 人点赞