[已解决]有个防火墙配置的问题

看手册看着还是看不懂
我在本机部署了 leanote 同时按教程安装了数据库
然后可在本机通过 9000 端口访问了 localhost:9000/index
然后手机或者局域网内其他都不能访问
看了一下是防火墙的原因
请问防火墙中的自定义规则中 目标接口 和源接口我该怎么配置


不是在这里。两个方法:

  1. 如果你是服务器的话,可以用 nginx 做 passthrough,就是把特定子站比如 leanote.example.com 的访问中转到 localhost:9000,如果不会我可以去论坛服务器上抄给你一个例子
  2. 如果就想用 9000 端口访问,你在“接口”那里把 9000 接口打开就行了。那个自定义规则的目标接口和源接口应该是用来把内部区域接口转发到已开放的外部区域接口的。比如访问 80 跳到 9000。

感谢回复 现在的问题是关掉防火墙就能访问 打开就歇菜了 现在我只想在内部局域网开放访问 你说的这第一个方法 我试试 谢谢了

Hello, pardon for using english, for my fcitx is broken. I think you should configure your firewal like this:

source network        protocol           dest port                 source port                  options
0/0                    tcp                  9000                   (keep blank)             (keep blank)

I just use my experience in “iptables” configuration to solve it, but it seems work. Actually, you can find how to fill them when you click “add” button.

Besides, Miss Marguerite’s solution (Using Nginx as a reverse server) is quite frequently used and helpful one.

May it could helps.

谢谢你的回复 我先试试第一个方法

我按照这里 leanote.leanote.com/post/nginx-https-for-leanote 的教程配置好了 还是不行
配置过程是先停止所有服务
然后生成证书:

>./create-ssl.sh 
Enter your domain [www.example.com]: leanote-suse.com
Create server key...
Generating RSA private key, 1024 bit long modulus
...++++++
...............++++++
e is 65537 (0x10001)
Enter pass phrase for leanote-suse.com.key:
Verifying - Enter pass phrase for leanote-suse.com.key:
Create server certificate signing request...
Enter pass phrase for leanote-suse.com.key:
Remove password...
Enter pass phrase for leanote-suse.com.origin.key:
writing RSA key
Sign SSL certificate...
Signature ok
subject=/C=US/ST=Mars/L=iTranswarp/O=iTranswarp/OU=iTranswarp/CN=leanote-suse.com
Getting Private key

证书生成好了
然后配置文件是:

#user  nobody;
worker_processes  1;

events {
    worker_connections  1024;
}


# 本配置只有 http 部分

http {
    include       /usr/local/nginx/conf/mime.types;
    default_type  application/octet-stream;

    keepalive_timeout  65;
    
	sendfile        on;

    upstream  leanote-suse.com  {
        server   localhost:9000;
    }

    # http
    server
    {
        listen  80;
        server_name  leanote-suse.com;

        # 强制 https
        # 如果不需要, 请注释这一行 rewrite
        #rewrite ^/(.*) https://jp_linode2.com/$1 permanent;

        location / {
            proxy_pass        http://leanote-suse.com;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
    }

    # https
    server
    {
        listen  443 ssl;
        server_name  leanote-suse.com;
        ssl_certificate     /home/xuan/leanote/leanote-suse.com.crt; # leanote-suse.crt 路径 下同
        ssl_certificate_key /home/xuan/leanote/leanote-suse.com.key;
        location / {
            proxy_pass        http://leanote-suse.com;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
    }
}

我编译的时候没有开启
–with-http_stub_status_module --with-http_ssl_module

然后重新编译覆盖源文件 启动好了 然后 悲催的时候来了 还是只能本机访问
看情况好像是 dns 解析的原因。。。。



难道还要 bind?

看了一下日志:
看蒙了

>sudo tail -n 10 -f /usr/local/nginx/logs/error.log 
xuan's password:
对不起,请重试。
xuan's password:
2017/03/10 18:45:30 [crit] 8667#0: accept4() failed (24: Too many open files)
2017/03/10 18:45:31 [crit] 8667#0: accept4() failed (24: Too many open files)
2017/03/10 18:45:31 [crit] 8667#0: accept4() failed (24: Too many open files)
2017/03/10 18:45:32 [crit] 8667#0: accept4() failed (24: Too many open files)
2017/03/10 18:45:32 [crit] 8667#0: accept4() failed (24: Too many open files)
2017/03/10 18:45:33 [crit] 8667#0: accept4() failed (24: Too many open files)
2017/03/10 18:45:33 [crit] 8667#0: accept4() failed (24: Too many open files)
2017/03/10 18:45:34 [crit] 8667#0: accept4() failed (24: Too many open files)
2017/03/10 18:45:34 [crit] 8667#0: accept4() failed (24: Too many open files)
2017/03/10 18:49:19 [emerg] 12256#0: host not found in upstream "leanote-suse.com" in /usr/local/nginx/conf/nginx.conf:34

你可以尝试一下把 127.0.0.1 leanote-suse.com 加到 /etc/hosts 里面,hosts 文件就是早期用来实现 DNS 解析的,加在这里也可以,这样的话本地应该就不会报错了,远程访问的话,只能通过 IP 了,或者你把手机里的 hosts 也改掉,bind 实在是没有必要。

防火墙这样配就可以通过端口直接访问了。


还可以在允许服务 -> 外部区域 -> 右下高级,在 TCP 端口里添上你要开放给外部访问的端口,保存重启防火墙。

1赞

hosts加着呢。。。。。不行

通过我的 X9 上的 Tapatalk发言

这样的话 公共网络能扫到这个9000端口吗?我其实就是不想把端口开放到外网。

通过我的 X9 上的 Tapatalk发言

谢谢 试了这个方法 可行 我当初在这里可能是设置的不对 所以访问不了 谢谢你了 测试了一下 即使我开了 nginx 也还是不行 这个发行版对安全方面的设置 确实咂舌 :smirk:


扫出来 N 多口子~~~~ :nauseated_face:

会,如果只想开放给内网的话就把自定义规则加到内部区域,而不是外部区域。

好的 谢谢 回去修改一下

通过我的 X9 上的 Tapatalk 发言